home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 48
/
Amiga Format CD48 (1999-12-13)(Future Publishing)(GB)(Track 1 of 2)[!][issue 2000-01].iso
/
-serious-
/
misc
/
datelib
/
developer
/
autodocs
/
date.doc
next >
Wrap
Text File
|
1999-11-01
|
129KB
|
5,592 lines
TABLE OF CONTENTS
Date/--background--
Date/Compare2Dates
Date/Compare2Times
Date/DateText
Date/DateToJD
Date/DateToNum
Date/DayDiff
Date/DaysAfterWeekday
Date/DaysBeforeWeekday
Date/DiffDateRange
Date/DiffTime
Date/Easter
Date/FormatDate
Date/FormatTime
Date/GMTToLocal
Date/GregorianDayDiff
Date/GregorianDaysAfterWeekday
Date/GregorianDaysBeforeWeekday
Date/GregorianDiffDate
Date/GregorianDiffDateRange
Date/GregorianEaster
Date/GregorianLastMonthDay
Date/GregorianLeapYear
Date/GregorianMonthDays
Date/GregorianMoonAge
Date/GregorianMoonPhase
Date/GregorianRangeDiff
Date/GregorianToJD
Date/GregorianWeek
Date/GregorianWeekday
Date/GregorianWWtoDM
Date/GregorianYearDays
Date/GSYearToJD
Date/GYearToScaliger
Date/HeisDayDiff
Date/HeisDaysAfterWeekday
Date/HeisDaysBeforeWeekday
Date/HeisDiffDate
Date/HeisDiffDateRange
Date/HeisEaster
Date/HeisLastMonthDay
Date/HeisLeapYear
Date/HeisMonthDays
Date/HeisRangeDiff
Date/HeisToJD
Date/HeisWeek
Date/HeisWeekday
Date/HeisWWtoDM
Date/HeisYearDays
Date/HSYearToJD
Date/HYearToScaliger
Date/JDToDate
Date/JDToGregorian
Date/JDToHeis
Date/JDToJulian
Date/JDtoMJD
Date/JDToTime
Date/JSYearToJD
Date/JulianDayDiff
Date/JulianDaysAfterWeekday
Date/JulianDaysBeforeWeekday
Date/JulianDiffDate
Date/JulianDiffDateRange
Date/JulianEaster
Date/JulianLastMonthDay
Date/JulianLeapYear
Date/JulianMonthDays
Date/JulianRangeDiff
Date/JulianToJD
Date/JulianWeek
Date/JulianWeekday
Date/JulianWWtoDM
Date/JulianYearDays
Date/JYearToScaliger
Date/LastMonthDay
Date/LeapYear
Date/LMT
Date/LocalToGMT
Date/MJDtoJD
Date/MonthDays
Date/MonthShortText
Date/MonthText
Date/NextValidDate
Date/NextValidGregorianDate
Date/NextValidHeisDate
Date/NextValidJulianDate
Date/NumToDate
Date/NumToTime
Date/ParseDate
Date/ParseTime
Date/PreviousValidDate
Date/PreviousValidGregorianDate
Date/PreviousValidHeisDate
Date/PreviousValidJulianDate
Date/RangeDiff
Date/ScaligerYearToG
Date/ScaligerYearToH
Date/ScaligerYearToJ
Date/ScaligerYearToYear
Date/SecToTime
Date/SetCountry
Date/SetFirstWeekday
Date/SupplementCentury
Date/SYearToJD
Date/TimeDiff
Date/TimeToJD
Date/TimeToNum
Date/TimeToSec
Date/TimeZoneFactor
Date/ValidDate
Date/ValidGregorianDate
Date/ValidHeisDate
Date/ValidJulianDate
Date/ValidTime
Date/Week
Date/Weekday
Date/WeekdayShortText
Date/WeekdayText
Date/WWtoDM
Date/YearDays
Date/YearToScaliger
Date/--background-- Date/--background--
NAME
Date -- This module was designed in helping calc.calendar dates (V33)
FUNCTION
This module has been designed to become a useful and portable library
and to help developers calculate calendar dates!
NOTES
A tropical year is 365.2422 days! / 365d, 5h, 48min, 46sec
A moon month is 29.53059 days! / 29d, 12h, 44min, 2.9 sec
A moon phase is 7.38265 days!
The calculations are historical and NOT astronomical!
Date/Compare2Dates Date/Compare2Dates
NAME
Compare2Dates -- Compares date1 with date2. (V33.100)
SYNOPSIS
compare = date_Compare2Dates(day1,month1,year1,day2,month2,year2);
d0 d0 d1 d2 d3 d4 d5
short date_Compare2Dates(const unsigned short day1,
const unsigned short month1, const long year1,
const unsigned short day2, const unsigned short month2,
const long year2);
FUNCTION
Compare2Dates compares date1 with date2.
INPUTS
day1 - day of the first date
month1 - month of the first date
year1 - year of the first date
day2 - day of the second date
month2 - month of the second month
year2 - year of the second date
RESULT
compare - -1 : date1 < date2
0 : date1 = date2
1 : date1 > date2
EXAMPLE
...
if (date_Compare2Dates(18,9,1970,22,1,1994) == -1)
{
printf("<\n");
}
else
{
printf(">=\n");
}
...
NOTES
It is better only to use this function for years from 8 to 8000!
There is no need for different versions for Julian, Gregorian and
Heis dates!
BUGS
There is no check if the dates are valid!
SEE ALSO
Compare2Times()
Date/Compare2Times Date/Compare2Times
NAME
Compare2Times -- Compares time1 with time2. (V33.100)
SYNOPSIS
compare = time_Compare2Times(hour1,min1,sec1,hour2,min2,sec2);
d0 d0 d1 d2 d3 d4 d5
short time_Compare2Times(const unsigned short hour1,
const unsigned short min1, const unsigned short sec1,
const unsigned short hour2, const unsigned short min2,
const unsigned short sec2);
FUNCTION
Compare2Times compares time1 with time2 (24h format only).
INPUTS
hour1 - Hour of the first time.
min1 - Minute of the first time.
sec1 - Second of the first time.
hour2 - Hour of the second time.
min2 - Minute of the second time.
sec2 - Second of the second time.
RESULT
compare - -1 : time1 < time2
0 : time1 = time2
1 : time1 > time2
EXAMPLE
...
if (time_Compare2Times(13,10,0,9,0,0) == -1)
printf("<\n");
else
printf(">=\n");
...
NOTES
This compares two times of 24h format!
BUGS
There is no check if the times are valid times!
SEE ALSO
Compare2Dates()
Date/DateText Date/DateText
NAME
DateText -- Get a date text string. (V33.130)
SYNOPSIS
date_DateText(dt,text,lang,wc);
d0 a0 d1 d2
void date_DateText(const date_DateTexts dt, char *const text,
const date_Languages lang, const date_WordClass wc);
FUNCTION
This function gets a date specified text in each supported language
INPUTS
dt - The text you want.
text - Pointer to a string to fill in the text.
lang - Language for which you want the text.
wc - singular : The singular form is given.
plural : The plural form is given (if available).
periodical : The periodical form is given (if available).
RESULT
None
EXAMPLE
...
char txt[20];
...
date_DateText(day,&txt,English,date_SINGULAR);
...
NOTES
Languages:
Locale : This is an Amiga >= OS2.1 only feature, for <= OS2.0
and other systems it will return English text!
Available strings:
day,month,year,week,weekday,hour,minute,second,yesterday,today,
tomorrow
There is no plural form available for: yesterday,today,tomorrow
There is no periodical form available for: yesterday,today,tomorrow,
weekday
BUGS
In this version there is no check, if there is enough space in
text!
SEE ALSO
WeekdayText(),WeekdayShortText(),MonthText(),MonthShortText()
Date/DateToJD Date/DateToJD
NAME
DateToJD -- Returns the JD for a date. (V33.310)
SYNOPSIS
jd = date_DateToJD(day,month,year,calendar);
d0 d0 d1 d2 d3
unsigned long date_DateToJD(const unsigned short day,
const unsigned short month, const long year,
const date_Calendars calendar);
FUNCTION
Returns the JD for a date.
INPUTS
day - day of the date to convert
month - month of the date to convert
year - year of the date to convert
calendar - Calendar system to use
RESULT
jd - This is the JD
EXAMPLE
...
jd = date_DateToJD(23,1,1994,date_Gregorian);
...
NOTES
It is better to use this function only from 8 to 8000!
BUGS
unknown.
SEE ALSO
JulianToJD(),GregorianToJD(),HeisToJD()
Date/DateToNum Date/DateToNum
NAME
DateToNum -- Returns the date in a numeric format. (V33.250)
SYNOPSIS
num = date_DateToNum(day,month,year);
d0 d0 d1 d2
long date_DateToNum(const unsigned short day,
const unsigned short month, const long year);
FUNCTION
Returns the date in a numeric format:
(year*100+month)*100+day
INPUTS
day - day of the date to convert
month - month of the date to convert
year - year of the date to convert
RESULT
num - Date in numeric format.
EXAMPLE
...
num = date_DateToNum(28,6,1997);
...
NOTES
Negative years will be handled correctly.
BUGS
None.
SEE ALSO
NumToDate()
Date/DayDiff Date/DayDiff
NAME
DayDiff -- Calculates the days between 2 dates. (V33.310)
SYNOPSIS
days = date_DayDiff(day1,month1,year1,day2,month2,year2,calendar);
d0 d0 d1 d2 d3 d4 d5 d6
long date_DayDiff(const unsigned short day1,
unsigned short month1, long year1, const unsigned short day2,
unsigned short month2, long year2, const date_Calendars calendar);
FUNCTION
DayDiff gives you back the number of days between
two specified dates.
INPUTS
day1 - day of the first date
month1 - month of the first date
year1 - year of the first date
day2 - day of the second date
month2 - month of the second month
year2 - year of the second date
calendar - Calendar system to use
RESULT
days - The number of days between the two dates
(positive if date1 <= date2).
EXAMPLE
long days;
...
days = date_DayDiff(18,9,1970,22,1,1994,date_Gregorian);
printf("Age of Kai Hofmann in days : %ld\n",days);
...
NOTES
It is better only to use this function for years from 8 to 02.3200!
BUGS
If you use one of the dates 5.10.1582 to 14.10.1582 you will get an
incorrect output because these days don't exist!
SEE ALSO
JulianDayDiff(),GregorianDayDiff(),HeisDayDiff()
Date/DaysAfterWeekday Date/DaysAfterWeekday
NAME
DaysAfterWeekday -- Returns the diff to wday after. (V33.310)
SYNOPSIS
days = date_DaysAfterWeekday(day,month,year,weekday,calendar);
d0 d0 d1 d2 d3 d4
unsigned short date_DaysAfterWeekday(const unsigned short day,
const unsigned short month, const long year,
const date_Weekdays weekday, const date_Calendars calendar);
FUNCTION
Returns the days to the weekday after the specified date.
INPUTS
day - day of the date
month - month of the date
year - year of the date
weekday - weekday to search for building difference
calendar - Calendar system to use
RESULT
days - The days after to the searched weekday.
EXAMPLE
...
days = date_DaysAfterWeekday(22,1,1994,date_Thursday,date_Gregorian);
...
NOTES
It is better to use this function only from 8 to 3200!
BUGS
See Weekday()!
SEE ALSO
JulianDaysAfterWeekday(),GregorianDaysAfterWeekday(),
HeisDaysAfterWeekday()
Date/DaysBeforeWeekday Date/DaysBeforeWeekday
NAME
DaysBeforeWeekday -- Returns the diff to wday before. (V33.310)
SYNOPSIS
days = date_DaysBeforeWeekday(day,month,year,weekday,calendar);
d0 d0 d1 d2 d3 d4
unsigned short date_DaysBeforeWeekday(const unsigned short day,
const unsigned short month, const long year,
const date_Weekdays weekday, const date_Calendars calendar);
FUNCTION
Returns the days to the weekday before the specified date.
INPUTS
day - day of the date
month - month of the date
year - year of the date
weekday - weekday to search for building difference
calendar - Calendar system to use
RESULT
days - The days gets you back to the searched weekday (1-7)
If you get back an 8, an error occurs!
EXAMPLE
...
days = date_DaysBeforeWeekday(22,1,1994,date_Thursday,date_Gregorian);
...
NOTES
It is better to use this function only from 8 to 3200!
BUGS
See Weekday()!
SEE ALSO
JulianDaysBeforeWeekday(),GregorianDaysBeforeWeekday(),
HeisDaysBeforeWeekday()
Date/DiffDateRange Date/DiffDateRange
NAME
DiffDateRange -- Calc new date from old one. (V33.310)
SYNOPSIS
date_DiffDateRange(day,month,year,days,months,
years,dday,dmonth,dyear,calendar);
d0 d1 d2 d3 d4
d5 a0 a1 a2 d6
void date_DiffDateRange(const unsigned short day,
const unsigned short month, const long year, long days,
long months, long years, unsigned short *const dday,
unsigned short *const dmonth, long *const dyear,
const date_Calendars calendar);
void date_DiffDateRange(const unsigned short day,
const unsigned short month, const long year, long days,
long months, long years, unsigned short &dday,
unsigned short &dmonth, long &dyear,
const date_Calendars calendar);
FUNCTION
Returns the date which lies diffrange before/after the specified date.
INPUTS
day - day of the date
month - month of the date
year - year of the date
days - difference to the date in days
months - difference to the date in months
years - difference to the date in years
calendar - Calendar system to use
RESULT
dday - Destination day
dmonth - Destination month
dyear - Destination year
EXAMPLE
...
date_DiffDateRange(23,1,1994,0,0,1,&dday,&dmonth,&dyear,date_Gregorian);
...
NOTES
It is better to use this function only from 8 to 3200!
BUGS
unknown.
SEE ALSO
RangeDiff(),JulianDiffDateRange(),GregorianDiffDateRange(),
HeisDiffDateRange()
Date/DiffTime Date/DiffTime
NAME
DiffTime -- Returns the diff. time to another time. (V33)
SYNOPSIS
time_DiffTime(hour,min,sec,secs,rhour,rmin,rsec);
d0 d1 d2 d3 a0 a1 a2
void time_DiffTime(const unsigned short hour, const unsigned short min,
const unsigned short sec, long secs, unsigned short *const rhour,
unsigned short *const rmin, unsigned short *const rsec);
void time_DiffTime(const unsigned short hour, const unsigned short min,
const unsigned short sec, long secs, unsigned short &rhour,
unsigned short &rmin, unsigned short &rsec);
FUNCTION
Returns the time which lies diffsecs before/after the specified time.
INPUTS
hour - hour
min - minute
sec - second
diffsecs - difference to the time in seconds
RESULT
rhour - new hour
rmin - new minute
rsec - new second
EXAMPLE
...
time_DiffTime(12,19,0,2460,&hour,&min,&sec);
...
NOTES
Don't forget to convert AM/PM to 24h time!
Don't forget to convert 24h time to AM/PM time if needed!
BUGS
No errorcheck, if you use a valid time
SEE ALSO
TimeToSec(),SecToTime()
Date/Easter Date/Easter
NAME
Easter -- Returns the date of Easter in a year (V33.310)
SYNOPSIS
date_Easter(year,dday,dmonth,calendar);
d0 a0 a1 d1
void date_Easter(const long year, unsigned short *const dday,
unsigned short *const dmonth, const date_Calendars calendar);
void date_Easter(const long year, unsigned short &dday,
unsigned short &dmonth, const date_Calendars calendar);
FUNCTION
Returns the date of Easter for a specified year.
INPUTS
year - Easter is calculated for this year
calendar - Calendar system to use
RESULT
dday - day of Easter Sunday
dmonth - month of Easter Sunday
EXAMPLE
...
date_Easter(1994,&dday,&dmonth,date_Gregorian);
...
NOTES
Use this only for 31 to 2099!
BUGS
None.
SEE ALSO
JulianEaster(),GregorianEaster(),HeisEaster()
Date/FormatDate Date/FormatDate
NAME
FormatDate -- Formats a date string (V33.238)
SYNOPSIS
date_FormatDate(fmt,day,month,year,lang,tstr);
a0 d0 d1 d2 d3 a1
void date_FormatDate(const char *const fmt,
const unsigned short day, const unsigned short month,
const long year, const date_Languages lang, char *const tstr);
FUNCTION
Formats the date into a string.
INPUTS
fmt - Format template string
day - Day of the date to format
month - Month of the date to format
year - Year of the date to format
lang - Language to use for strings
RESULT
tstr - Formatted date string
EXAMPLE
char buffer[20];
...
date_FormatDate("%Y-%m-%d",10,3,1997,date_Locale,buffer);
/* "1997-03-10" */
...
SYNTAX
Syntax of Amiga compatible % commands:
%d : Day number with leading 0s
%e : Day number with leading spaces
%m : Month number with leading 0s
%h : Abbreviated month name
%b : Abbreviated month name
%B : Month name
%y : Year using two digits with leading 0s
%Y : Year using four digits with leading 0s
%j : Julian date
%w : Weekday number
%a : Abbreviated weekday name
%A : Weekday name
%U : Week number, taking Sunday as first day of week
%W : Week number, taking Monday as first day of week
%x : Same as "%m/%d/%y"
%D : Same as "%m/%d/%y"
Syntax of % commands:
%Ddf : Day with leading 0s
%Ddv : Day without leading 0s
%DDf : Day within the year with leading 0s
%DDv : Day within the year without leading 0s
%Dmf : Month with leading 0s
%Dmv : Month without leading 0s
%Dms : Month string
%Dma : Abbreviated month string
%Dy2f : 2-digit year with leading 0s
%Dy2v : 2-digit year without leading 0s
%Dy4f : 4-digit year with leading 0s
%Dy4v : 4-digit year without leading 0s
%Dys : Scaliger year
%Dj : JD date
%DJ : MJD date
%Dwn : Weekday number (1-7)
%Dws : Weekday string
%Dwa : Abbreviated weekday string
%DWf : Weeknumber with leading 0s
%DWv : Weeknumber without leading 0s
%DMf : Age of the moon (0-30 ?) with leading 0s
%DMv : Age of the moon (0-30 ?) without leading 0s
NOTES
None.
BUGS
No errorcheck, if you use a valid date, no check if tstr is big
enough.
Using something like "%a %W %Y" as fmt might result in a wrong
output year if used for the first/last week of a year.
Example:
1996-12-30 results into "Mo 1 1996" instead of 1997!
SEE ALSO
ParseDate()
Date/FormatTime Date/FormatTime
NAME
FormatTime -- Formats a time string (V33.224)
SYNOPSIS
time_FormatTime(fmt,ChangeDay,ChangeHour,DST,hour,min,sec,
zonemin,tstr);
a0 d0 d1 d2 d3 d4 d5
d6 a1
void time_FormatTime(const char *const fmt,
const enum time_ChangeDay ChangeDay,
const unsigned short ChangeHour, const bool DST,
const unsigned short hour, const unsigned short min,
const unsigned short sec, const short zonemin,
char *const tstr);
FUNCTION
Formats the time into a string.
INPUTS
fmt - Format template string
ChangeDay - Normal day, winter to summer or summer to winter
time change day.
ChangeHour - Hour of summer/winter time change
DST - Daylight saving status
hour - Hour of the time to format
min - Minute of the time to format
sec - Second of the time to format
zonemin - Time that was added to GMT time to get the local
time zone (in minutes -779 to +779)
RESULT
tstr - Formatted time string
EXAMPLE
char buffer[20];
...
time_FormatTime("%H:%M:%S",time_Normal,2,0,14,57,0,-360,
buffer); /* "14:57:0" */
...
SYNTAX
Syntax of Amiga compatible % commands:
%q : Hour using 24-hour style
%H : Hour using 24-hour style with leading 0s
%Q : Hour using 12-hour style
%I : Hour using 12-hour style with leading 0s
%p : AM or PM strings
%M : The number of minutes with leading 0s
%S : Number of seconds with leadings 0s
%R : Same as "%H:%M"
%X : Same as "%H:%M:%S"
%T : Same as "%H:%M:%S"
%r : Same as "%I:%M:%S %p"
Syntax of % commands:
%Th1f : 12 with leading 0s
%Th1v : 12 without leading 0s
%Th2f : 24 with leading 0s
%Th2v : 24 without leading 0s
%Tpso : a/p
%Tpsu : A/P
%Tplo : am/pm
%Tplu : AM/PM
%Tmf : with leading 0s
%Tmv : without leading 0s
%Tsf : with leading 0s
%Tsv : without leading 0s
%Tj. : starting with '.'
%Tj, : starting with ','
%Tj0 : starting with '0.'
%Tj1 : starting with '0,'
%Tzh?? : hours only
%Tzm? : 0100
%TzM?? : 01:00
%Tz?z? : Use Z for UTC
%Tz?0? : Use +00 for UTC
%Tz??f : use leading 0s
%Tz??v : do not use leading 0s
%Tc1 : Use DST for s->w switch
%Tc2 : Use I/II for s->w switch
%Tc3 : Use a/b for s->w switch (24h only) - on 12h falls back to 2
NOTES
None.
BUGS
No errorcheck, if you use a valid time, no check if tstr is big
enough.
SEE ALSO
ParseTime()
Date/GMTToLocal Date/GMTToLocal
NAME
GMTToLocal -- Converts a GMT time to a locale one (V33.300)
SYNOPSIS
datetime_GMTToLocal(gjd,gsecs,zonemin,ChangePrevDay,ChangeDay,
ChangeNextDay,ChangeHour,ljd,lsecs,DST);
d0 d1 d2 d3 d4
d5 d6 a0 a1 a2
void datetime_GMTToLocal(const unsigned long gjd,
const unsigned long gsecs, const short zonemin,
const time_ChangeDay ChangePrevDay,
const time_ChangeDay ChangeDay,
const time_ChangeDay ChangeNextDay,
const unsigned short ChangeHour, unsigned long *const ljd,
unsigned long *const lsecs, bool *const DST);
void datetime_GMTToLocal(const unsigned long gjd,
const unsigned long gsecs, const short zonemin,
const time_ChangeDay ChangePrevDay,
const time_ChangeDay ChangeDay,
const time_ChangeDay ChangeNextDay,
const unsigned short ChangeHour, unsigned long &ljd,
unsigned long &lsecs, bool &DST);
FUNCTION
Converts a GMT date/time pair into a local date/time pair.
The conversion considers the local daylight savings time as well as
the time change from winter to summer and vice versa (if any).
INPUTS
gjd - GMT Julian Date
gsecs - GMT time in seconds
zonemin - Time that was added to GMT time to get the local time
zone (in minutes -779 to +779)
ChangePrevDay - Normal day, winter to summer or summer to winter time
change on the previous day
ChangeDay - Normal day, winter to summer or summer to winter time
change day
ChangeNextDay - Normal day, winter to summer or summer to winter time
change on the next day
ChangeHour - Hour of summer/winter time change
DST - Daylight saving status
RESULT
DST - Daylight saving status
ljd - Local Julian Date
lsecs - Local time in seconds
EXAMPLE
unsigned long ljd,lsecs;
bool DST = true;
...
datetime_GMTToLocal(2450919,30300,+60,time_Normal,time_Normal,
time_Normal,2,&ljd,&lsecs,&DST);
...
NOTES
None.
BUGS
No errorcheck, if you use a valid date/time.
SEE ALSO
LocalToGMT(), JulianToJD(), GregorianToJD(), HeisToJD(),
JDToJulian(), JDToGregorian(), JDToHeis(), TimeToSec(), SecToTime(),
TimeZoneFactor()
Date/GregorianDayDiff Date/GregorianDayDiff
NAME
GregorianDayDiff -- Calculates the days between 2 dates. (V33)
SYNOPSIS
days = date_GregorianDayDiff(day1,month1,year1,day2,month2,year2);
d0 d0 d1 d2 d3 d4 d5
long date_GregorianDayDiff(const unsigned short day1,
unsigned short month1, long year1, const unsigned short day2,
unsigned short month2, long year2);
FUNCTION
GregorianDayDiff gives you back the number of days between
two specified dates.
INPUTS
day1 - day of the first date
month1 - month of the first date
year1 - year of the first date
day2 - day of the second date
month2 - month of the second month
year2 - year of the second date
RESULT
days - The number of days between the two dates
(positive if date1 <= date2).
EXAMPLE
long days;
...
days = date_GregorianDayDiff(18,9,1970,22,1,1994);
printf("Age of Kai Hofmann in days : %ld\n",days);
...
NOTES
It is better only to use this function for years from 8 to 02.3200!
BUGS
If you use one of the dates 5.10.1582 to 14.10.1582 you will get an
incorrect output because these days don't exist!
SEE ALSO
GregorianLeapYear(),GregorianMonthDays(),GregorianYearDays(),
JulianDayDiff(),HeisDayDiff()
Date/GregorianDaysAfterWeekday Date/GregorianDaysAfterWeekday
NAME
GregorianDaysAfterWeekday -- Returns the diff to wday after. (V33)
SYNOPSIS
days = date_GregorianDaysAfterWeekday(day,month,year,weekday);
d0 d0 d1 d2 d3
unsigned short date_GregorianDaysAfterWeekday(const unsigned short day,
const unsigned short month, const long year,
const date_Weekdays weekday);
FUNCTION
Returns the days to the weekday after the specified date.
If you specify the 22.1.1994 (Saturday) and Thursday
you get back 5!
If you specify the 22.1.1994 and Saturday you get back 0
(the same day)!
INPUTS
day - day of the date
month - month of the date
year - year of the date
weekday - weekday to search for building difference
RESULT
days - The days after to the searched weekday.
EXAMPLE
...
days = date_GregorianDaysAfterWeekday(22,1,1994,Thursday);
...
NOTES
It is better to use this function only from 8 to 3200!
BUGS
See GregorianWeekday()!
SEE ALSO
GregorianWeekday(),JulianDaysAfterWeekday(),HeisDaysAfterWeekday()
Date/GregorianDaysBeforeWeekday Date/GregorianDaysBeforeWeekday
NAME
GregorianDaysBeforeWeekday -- Returns the diff to wday before. (V33)
SYNOPSIS
days = date_GregorianDaysBeforeWeekday(day,month,year,weekday);
d0 d0 d1 d2 d3
unsigned short date_GregorianDaysBeforeWeekday(const unsigned short day,
const unsigned short month, const long year,
const date_Weekdays weekday);
FUNCTION
Returns the days to the weekday before the specified date.
If you specify the 22.1.1994 (Saturday) and Thursday
you get back 2!
If you specify the 22.1.1994 and Saturday you get back 0
(the same day)!
INPUTS
day - day of the date
month - month of the date
year - year of the date
weekday - weekday to search for building difference
RESULT
days - The days gets you back to the searched weekday (1-7)
If you get back an 8 an error occurs!
EXAMPLE
...
days = date_GregorianDaysBeforeWeekday(22,1,1994,Thursday);
...
NOTES
It is better to use this function only from 8 to 3200!
BUGS
See GregorianWeekday()!
SEE ALSO
GregorianWeekday(),JulianDaysBeforeWeekday(),HeisDaysBeforeWeekday()
Date/GregorianDiffDate Date/GregorianDiffDate
NAME
GregorianDiffDate -- Returns the diff date to another date. (V33)
SYNOPSIS
date_GregorianDiffDate(day,month,year,days,dday,dmonth,dyear);
d0 d1 d2 d3 a0 a1 a2
void date_GregorianDiffDate(const unsigned short day,
const unsigned short month, const long year, long days,
unsigned short *const dday, unsigned short *const dmonth,
long *const dyear);
void date_GregorianDiffDate(const unsigned short day,
const unsigned short month, const long year, long days,
unsigned short &dday, unsigned short &dmonth, long &dyear);
FUNCTION
Returns the date which lies days before/after the specified date.
INPUTS
day - day of the date
month - month of the date
year - year of the date
days - difference to the date in days
RESULT
dday - Destination day
dmonth - Destination month
dyear - Destination year
EXAMPLE
...
date_GregorianDiffDate(23,1,1994,7,&dday,&dmonth,&dyear);
...
NOTES
This function is OBSOLETE - please use GregorianDiffDateRange()
instead!
It is better to use this function only from 8 to 3200!
BUGS
unknown.
SEE ALSO
GregorianDayDiff(),GregorianMonthDays(),JulianDiffDate(),
HeisDiffDate()
Date/GregorianDiffDateRange Date/GregorianDiffDateRange
NAME
GregorianDiffDateRange -- Calc new date from old one. (V33.296)
SYNOPSIS
date_GregorianDiffDateRange(day,month,year,days,months,
years,dday,dmonth,dyear);
d0 d1 d2 d3 d4
d5 a0 a1 a2
void date_GregorianDiffDateRange(const unsigned short day,
const unsigned short month, const long year, long days,
long months, long years, unsigned short *const dday,
unsigned short *const dmonth, long *const dyear);
void date_GregorianDiffDateRange(const unsigned short day,
const unsigned short month, const long year, long days,
long months, long years, unsigned short &dday,
unsigned short &dmonth, long &dyear);
FUNCTION
Returns the date which lies diffrange before/after the specified date.
INPUTS
day - day of the date
month - month of the date
year - year of the date
days - difference to the date in days
months - difference to the date in months
years - difference to the date in years
RESULT
dday - Destination day
dmonth - Destination month
dyear - Destination year
EXAMPLE
...
date_GregorianDiffDateRange(23,1,1994,0,0,1,&dday,&dmonth,&dyear);
...
NOTES
It is better to use this function only from 8 to 3200!
BUGS
unknown.
SEE ALSO
GregorianDiffDate(),GregorianRangeDiff(),JulianDiffDateRange(),
HeisDiffDateRange()
Date/GregorianEaster Date/GregorianEaster
NAME
GregorianEaster -- Returns the date of Easter in a year (V33)
SYNOPSIS
date_GregorianEaster(year,dday,dmonth);
d0 a0 a1
void date_GregorianEaster(const long year, unsigned short *const dday,
unsigned short *const dmonth);
void date_GregorianEaster(const long year, unsigned short &dday,
unsigned short &dmonth);
FUNCTION
Returns the date of Easter for a specified year.
INPUTS
year - Easter is calculated for this year
RESULT
dday - day of Easter Sunday
dmonth - month of Easter Sunday
EXAMPLE
...
date_GregorianEaster(1994,&dday,&dmonth);
...
NOTES
Use this only for 31 to 2099!
BUGS
None.
SEE ALSO
JulianEaster(),HeisEaster()
Date/GregorianLastMonthDay Date/GregorianLastMonthDay
NAME
GregorianLastMonthDay -- The number of last day in a month. (V33.234)
SYNOPSIS
day = date_GregorianLastMonthDay(month,year);
d0 d0 d1
unsigned short date_GregorianLastMonthDay(const unsigned short month,
const long year);
FUNCTION
GregorianLastMonthDay returns the number of the last day for a given
month.
INPUTS
month - The month from which you want to get the last day.
year - The year in which the month is.
RESULT
days - The number of the last day the month uses, or 0 if you use
an incorrect month.
EXAMPLE
...
day = date_GregorianLastMonthDay(1,1994); /* 31 */
...
NOTES
Use this function only for years from 8 to 3199!
BUGS
none.
SEE ALSO
GregorianMonthDays(),JulianLastMonthDay(),HeisLastMonthDay()
Date/GregorianLeapYear Date/GregorianLeapYear
NAME
GregorianLeapYear -- Checks if a year is a leap year. (V33)
SYNOPSIS
leapyear = date_GregorianLeapYear(year);
d0 d0
bool date_GregorianLeapYear(const long year);
FUNCTION
GregorianLeapYear checks if a year is a leap year.
For years after 1582 all years devideable by 4 are leap years,
without years devideable by 100, but years devideable by 400
are leap years again!
For years before 1582 see JulianLeapYear().
INPUTS
year - The year which should be checked (from -32768 to 32767)
I think only values from 8 to 3200 are valid, because of
the variant that was done by Augustus!
RESULT
leapyear - true if the year is a leap year, otherwise false.
EXAMPLE
...
if (date_GregorianLeapYear(1994))
{
printf("leap year!\n");
}
else
{
printf("no leap year!\n");
}
...
NOTES
A year is 365.2425 days long!
Use this function only for values from 8 to 3199!
BUGS
No known bugs.
SEE ALSO
JulianLeapYear(),HeisLeapYear()
Date/GregorianMonthDays Date/GregorianMonthDays
NAME
GregorianMonthDays -- Returns the number of days of a month. (V33)
SYNOPSIS
days = date_GregorianMonthDays(month,year);
d0 d0 d1
unsigned short date_GregorianMonthDays(const unsigned short month,
const long year);
FUNCTION
GregorianMonthDays returns the number of days a month in
a specified year has.
For the year 1582 and the month 10 there are only 21 days,
because of the Gregorian-reform 10 days are deleted from
the month (for more - look out for books about this!)
INPUTS
month - The month from which you want to get the number of days.
year - The year in which the month is.
RESULT
days - The number of days the month uses, or 0 if you use
an incorrect month.
EXAMPLE
unsigned short days;
...
days = date_GregorianMonthDays(1,1994);
printf("Days of January 1994 : %hu\n",days);
...
NOTES
Use this function only for years from 8 to 3199!
BUGS
none.
SEE ALSO
GregorianLeapYear(),JulianMonthDays(),HeisMonthDays()
Date/GregorianMoonAge Date/GregorianMoonAge
NAME
GregorianMoonAge -- Returns the age of the moon (V33)
SYNOPSIS
ep = date_GregorianMoonAge(day,month,year);
d0 d0 d1 d2
unsigned short date_GregorianMoonAge(const unsigned short day,
const unsigned short month, const long year);
FUNCTION
Returns the age of the moon on a specified date.
INPUTS
day - For this day the age is calculated.
month - For this month the age is calculated.
year - For this year the age is calculated.
RESULT
ep - The age of the moon on the specified date.
EXAMPLE
...
ep = date_GregorianMoonAge(18,9,1994);
...
NOTES
Use this only for 1582 to 4100!
This is only an experimental version!
BUGS
unknown.
SEE ALSO
MoonMonthAge(),GregorianEP(),GregorianMoonPhase()
Date/GregorianMoonPhase Date/GregorianMoonPhase
NAME
GregorianMoonPhase -- Searches for the next moon phase (V33.098)
SYNOPSIS
jd = date_GregorianMoonPhase(day,month,year,phase);
d0 d0 d1 d2 d3
unsigned long date_GregorianMoonPhase(const unsigned short day,
const unsigned short month, const long year,
const MoonPhases phase);
FUNCTION
Returns the next moon phase you are searching for after
a specified date.
INPUTS
day - Start day for the search.
month - Start month for the search.
year - Start year for the search.
phase - The moon phase you want to know.
RESULT
jd - The day (as JD) on which the moon phase was found.
EXAMPLE
...
jd = date_GregorianMoonPhase(18,9,1994,FullMoon);
date_JDToGregorian(jd,&day,&month,&year);
...
NOTES
The range of this function is unknown to me!
So use it only from 1583 to 2500.
This is only an experimental version!
BUGS
unknown.
SEE ALSO
MoonMonthAge()
Date/GregorianRangeDiff Date/GregorianRangeDiff
NAME
GregorianRangeDiff -- Calculates the range between 2 dates. (V33.297)
SYNOPSIS
date_GregorianRangeDiff(day1,month1,year1,day2,month2,year2,days,
months,years);
d0 d1 d2 d3 d4 d5 a0
a1 a2
void date_GregorianRangeDiff(unsigned short day1,
unsigned short month1, long year1, unsigned short day2,
unsigned short month2, long year2, short *const days,
short *const months, long *const years);
void date_GregorianRangeDiff(unsigned short day1,
unsigned short month1, long year1, unsigned short day2,
unsigned short month2, long year2, short &days, short &months,
long &years);
FUNCTION
GregorianRangeDiff gives you back the number of days, months and
years between two specified dates.
INPUTS
day1 - day of the first date
month1 - month of the first date
year1 - year of the first date
day2 - day of the second date
month2 - month of the second month
year2 - year of the second date
RESULT
days - The number of days between the two dates
(positive if date1 <= date2).
months - The number of months between the two dates
(positive if date1 <= date2).
years - The number of years between the two dates
(positive if date1 <= date2).
EXAMPLE
short days,months;
long years;
...
date_GregorianRangeDiff(18,9,1970,25,1,1998,&days,&months,&years);
printf("Age of Kai Hofmann is : %ld years, %hd months, %hd days\n",
years,months,days);
...
NOTES
It is better only to use this function for years from 8 to 02.3200!
BUGS
If you use one of the dates 5.10.1582 to 14.10.1582 you will get an
incorrect output because these days don't exist!
SEE ALSO
GregorianDayDiff(),GregorianDiffDateRange(),JulianRangeDiff(),
HeisRangeDiff()
Date/GregorianToJD Date/GregorianToJD
NAME
GregorianToJD -- Returns the JD for a date. (V33)
SYNOPSIS
jd = date_GregorianToJD(day,month,year);
d0 d0 d1 d2
unsigned long date_GregorianToJD(const unsigned short day,
const unsigned short month, const long year);
FUNCTION
Returns the JD for a Gregorian date.
INPUTS
day - day of the date to convert
month - month of the date to convert
year - year of the date to convert
RESULT
jd - This is the JD
EXAMPLE
...
jd = date_GregorianToJD(23,1,1994);
...
NOTES
It is better to use this function only from 8 to 3200!
BUGS
unknown.
SEE ALSO
GSYearToJD(),GYearToScaliger(),GregorianDayDiff(),JulianToJD(),
HeisToJD()
Date/GregorianWeek Date/GregorianWeek
NAME
GregorianWeek -- Gets the weeknumber for a specified date. (V33)
SYNOPSIS
weeknr = date_GregorianWeek(day,month,year);
d0 d0 d1 d2
unsigned short date_GregorianWeek(const unsigned short day,
const unsigned short month, const long year);
FUNCTION
GregorianWeek gets the number of the week for a specified date.
INPUTS
day - day of the date
month - month of the date
year - year of the date
RESULT
week - This is the number of the week the specified date lies in.
If the first day in a new year is a Friday, Saturday or
Sunday, this would be the last week of the last year!
If the 29.12. is a Monday, the 30.12. is a Monday or a Tuesday,
the 31.12. is a Monday, Tuesday or a Wednesday this is the
first week of the next year!
EXAMPLE
...
weeknr = date_GregorianWeek(4,10,1582);
...
NOTES
It is better only to use this function for years from 8 to 3200!
BUGS
For years < 0 errors could occur.
SEE ALSO
JulianWeek(),HeisWeek(),GregorianWeekday(),GregorianDayDiff(),
SetFirstWeekday()
Date/GregorianWeekday Date/GregorianWeekday
NAME
GregorianWeekday -- Gets the weekday of a specified date. (V33)
SYNOPSIS
weekday = date_GregorianWeekday(day,month,year);
d0 d0 d1 d2
date_Weekdays date_GregorianWeekday(const unsigned short day,
unsigned short month, long year);
FUNCTION
GregorianWeekday gets the weekday for a specified date.
INPUTS
day - day of the date
month - month of the date
year - year of the date
RESULT
weekday - This result is of type:
date_Weekdays = {date_dayerr,date_Monday,date_Tuesday,
date_Wednesday,date_Thursday,date_Friday,
date_Saturday,date_Sunday};
dayerr will show you, that an error occurs!
EXAMPLE
...
weekday = date_GregorianWeekday(22,1,1994);
if (weekday == dayerr)
{
...
}
...
NOTES
It is better only to use this function for years from 8 to 3200!
In this version dayerr will only occur for the lost days :)
BUGS
It's not possible to use years < 0 (for more see JulianWeekday()).
SEE ALSO
JulianWeekday(),HeisWeekday()
Date/GregorianWWtoDM Date/GregorianWWtoDM
NAME
GregorianWWtoDM -- Convert Weekday,Week to Day,Month. (V33.243)
SYNOPSIS
date_GregorianWWtoDM(weekday,week,year,dday,dmonth,dyear);
d0 d1 d2 a0 a1 a2
void date_GregorianWWtoDM(const date_Weekdays weekday,
const unsigned short week, const long year,
unsigned short *const dday, unsigned short *const dmonth,
long *const dyear);
void date_GregorianWWtoDM(const date_Weekdays weekday,
const unsigned short week, const long year,
unsigned short &dday, unsigned short &dmonth,
long &dyear);
FUNCTION
Converts weekday,week to day,month.
INPUTS
weekday - weekday of the date to convert
week - week of the date to convert
year - year of the date to convert
RESULT
day - day of the converted date
month - month of the converted date
year - year of the converted date
EXAMPLE
unsigned short day,month;
long year;
...
date_GregorianWWtoDM(date_Thursday,14,1997,&day,&month,&year);
/* 1997-04-03 */
...
NOTES
It is better to use this function only from 8 to 3200!
Be careful, the resulting year might be different from the input
year!
BUGS
unknown.
SEE ALSO
GregorianWWtoDM(), HeisWWtoDM()
Date/GregorianYearDays Date/GregorianYearDays
NAME
GregorianYearDays -- Gives back the number of days in a year. (V33)
SYNOPSIS
days = date_GregorianYearDays(year);
d0 d0
unsigned short date_GregorianYearDays(const long year);
FUNCTION
GregorianYearDays gives you back the number of days in
a specified year.
INPUTS
year - The year in which to count the days.
RESULT
days - The number of days the year uses.
EXAMPLE
unsigned short days;
...
days = date_GregorianYearDays(1994);
printf("Days of 1994 : %hu\n",days);
...
NOTES
It is better only to use this function for years from 8 to 3199!
BUGS
No known bugs.
SEE ALSO
GregorianMonthDays(),JulianYearDays(),HeisYearDays()
Date/GSYearToJD Date/GSYearToJD
NAME
GSYearToJD -- Calcs the JD from a Scaliger year. (V33)
SYNOPSIS
jd = date_GSYearToJD(syear);
d0 d0
unsigned long date_GSYearToJD(const unsigned long syear);
FUNCTION
Returns the Julianday of a Scaliger year.
INPUTS
syear - Scaliger year
RESULT
jd - The Julianday
EXAMPLE
...
jd = date_GSYearToJD(4800);
...
NOTES
It is better to use this function only from 4707 to 7981!
BUGS
unknown.
SEE ALSO
JSYearToJD(),HSYearToJD()
Date/GYearToScaliger Date/GYearToScaliger
NAME
GYearToScaliger -- Returns the year as Scaliger year. (V33)
SYNOPSIS
syear = date_GYearToScaliger(year);
d0 d0
unsigned long date_GYearToScaliger(const long year);
FUNCTION
Returns the Scaliger year.
INPUTS
year - Gregorian year
RESULT
syear - The Scaliger year
EXAMPLE
...
syear = date_GYearToScaliger(1994);
...
NOTES
It is better to use this function only from 8 to 3200!
BUGS
unknown.
SEE ALSO
JYearToScaliger(),HYearToScaliger()
Date/HeisDayDiff Date/HeisDayDiff
NAME
HeisDayDiff -- Calculates the days between 2 dates. (V33)
SYNOPSIS
days = date_HeisDayDiff(day1,month1,year1,day2,month2,year2);
d0 d0 d1 d2 d3 d4 d5
long date_HeisDayDiff(const unsigned short day1, unsigned short month1,
long year1, const unsigned short day2, unsigned short month2,
long year2);
FUNCTION
HeisDayDiff gives you back the number of days between
two specified dates.
INPUTS
day1 - day of the first date
month1 - month of the first date
year1 - year of the first date
day2 - day of the second date
month2 - month of the second month
year2 - year of the second date
RESULT
days - The number of days between the two dates
(positive if date1 <= date2).
EXAMPLE
long days;
...
days = date_HeisDayDiff(18,9,1970,22,1,1994);
printf("Age of Kai Hofmann in days : %ld\n",days);
...
NOTES
It is better only to use this function for years from 8 to 8000!
BUGS
If you use on of the dates 5.10.1582 to 14.10.1582 you will get an
incorrect output because these days don't exist!
SEE ALSO
HeisLeapYear(),HeisMonthDays(),HeisYearDays(),
JulianDayDiff(),GregorianDayDiff()
Date/HeisDaysAfterWeekday Date/HeisDaysAfterWeekday
NAME
HeisDaysAfterWeekday -- Returns the diff to the wday after. (V33)
SYNOPSIS
days = date_HeisDaysAfterWeekday(day,month,year,weekday);
d0 d0 d1 d2 d3
unsigned short date_HeisDaysAfterWeekday(const unsigned short day,
const unsigned short month, const long year,
const date_Weekdays weekday);
FUNCTION
Returns the days to the weekday after the specified date.
If you specify the 22.1.1994 (Saturday) and Thursday
you get back 5!
If you specify the 22.1.1994 and Saturday you get back 0
(the same day)!
INPUTS
day - day of the date
month - month of the date
year - year of the date
weekday - weekday to search for building difference
RESULT
days - The days after to the searched weekday.
EXAMPLE
...
days = date_HeisDaysAfterWeekday(22,1,1994,Thursday);
...
NOTES
It is better to use this function only from 8 to 8000!
BUGS
See HeisWeekday()!
SEE ALSO
HeisWeekday(),JulianDaysAfterWeekday(),GregorianDaysAfterWeekday()
Date/HeisDaysBeforeWeekday Date/HeisDaysBeforeWeekday
NAME
HeisDaysBeforeWeekday -- Returns the diff to wday before. (V33)
SYNOPSIS
days = date_HeisDaysBeforeWeekday(day,month,year,weekday);
d0 d0 d1 d2 d3
unsigned short date_HeisDaysBeforeWeekday(const unsigned short day,
const unsigned short month, const long year,
const date_Weekdays weekday);
FUNCTION
Returns the days to the weekday before the specified date.
If you specify the 22.1.1994 (Saturday) and Thursday
you get back 2!
If you specify the 22.1.1994 and Saturday you get back 0
(the same day)!
INPUTS
day - day of the date
month - month of the date
year - year of the date
weekday - weekday to search for building difference
RESULT
days - The days gets you back to the searched weekday (1-7)
If you get back an 8 an error occurs!
EXAMPLE
...
days = date_HeisDaysBeforeWeekday(22,1,1994,Thursday);
...
NOTES
It is better to use this function only from 8 to 8000!
BUGS
See HeisWeekday()!
SEE ALSO
HeisWeekday(),JulianDaysBeforeWeekday(),GregorianDaysBeforeWeekday()
Date/HeisDiffDate Date/HeisDiffDate
NAME
HeisDiffDate -- Returns the date for a diff to another date. (V33)
SYNOPSIS
date_HeisDiffDate(day,month,year,days,dday,dmonth,dyear);
d0 d1 d2 d3 a0 a1 a2
void date_HeisDiffDate(const unsigned short day,
const unsigned short month, const long year, long days,
unsigned short *const dday, unsigned short *const dmonth,
long *const dyear);
void date_HeisDiffDate(const unsigned short day,
const unsigned short month, const long year, long days,
unsigned short &dday, unsigned short &dmonth, long &dyear);
FUNCTION
Returns the date which lies days before/after the specified date.
INPUTS
day - day of the date
month - month of the date
year - year of the date
days - difference to the date in days
RESULT
dday - Destination day
dmonth - Destination month
dyear - Destination year
EXAMPLE
...
date_HeisDiffDate(23,1,1994,7,&dday,&dmonth,&dyear);
...
NOTES
This function is OBSOLETE - please use HeisDiffDateRange()
instead!
It is better to use this function only from 8 to 8000!
BUGS
unknown.
SEE ALSO
HeisDayDiff(),HeisMonthDays(),JulianDiffDate(),GregorianDiffDate()
Date/HeisDiffDateRange Date/HeisDiffDateRange
NAME
HeisDiffDateRange -- Calc new date from old one and diff. (V33.296)
SYNOPSIS
date_HeisDiffDateRange(day,month,year,days,months,years,
dday,dmonth,dyear);
d0 d1 d2 d3 d4 d5
a0 a1 a2
void date_HeisDiffDateRange(const unsigned short day,
const unsigned short month, const long year, long days,
long months, long years, unsigned short *const dday,
unsigned short *const dmonth, long *const dyear);
void date_HeisDiffDateRange(const unsigned short day,
const unsigned short month, const long year, long days,
long months, long years, unsigned short &dday,
unsigned short &dmonth, long &dyear);
FUNCTION
Returns the date which lies diffrange before/after the specified date.
INPUTS
day - day of the date
month - month of the date
year - year of the date
days - difference to the date in days
months - difference to the date in months
years - difference to the date in years
RESULT
dday - Destination day
dmonth - Destination month
dyear - Destination year
EXAMPLE
...
date_HeisDiffDateRange(23,1,1994,0,0,1,&dday,&dmonth,&dyear);
...
NOTES
It is better to use this function only from 8 to 8000!
BUGS
unknown.
SEE ALSO
HeisDiffDate(),HeisRangeDiff(),JulianDiffDateRange(),
GregorianDiffDateRange()
Date/HeisEaster Date/HeisEaster
NAME
HeisEaster -- Returns the date of Easter in a year (V33)
SYNOPSIS
date_HeisEaster(year,dday,dmonth);
d0 a0 a1
void date_HeisEaster(const long year, unsigned short *const dday,
unsigned short *const dmonth);
void date_HeisEaster(const long year, unsigned short &dday,
unsigned short &dmonth);
FUNCTION
Returns the date of Easter for a specified year.
INPUTS
year - Easter is calculated for this year
RESULT
dday - day of Easter Sunday
dmonth - month of Easter Sunday
EXAMPLE
...
date_HeisEaster(1994,&dday,&dmonth);
...
NOTES
This is only a dummy to date_GregorianEaster!
Use this only for 31 to 2099!
BUGS
Unknown.
SEE ALSO
JulianEaster(),GregorianEaster()
Date/HeisLastMonthDay Date/HeisLastMonthDay
NAME
HeisLastMonthDay -- The number of last day in a month. (V33.234)
SYNOPSIS
day = date_HeisLastMonthDay(month,year);
d0 d0 d1
unsigned short date_HeisLastMonthDay(const unsigned short month,
const long year);
FUNCTION
HeisLastMonthDay returns the number of the last day for a given
month.
INPUTS
month - The month from which you want to get the last day.
year - The year in which the month is.
RESULT
day - The number of the last day the month uses, or 0 if you use
an incorrect month.
EXAMPLE
...
day = date_HeisLastMonthDays(1,1994); /* 31 */
...
NOTES
Use this function only for years from 8 to 8000!
BUGS
None
SEE ALSO
HeisMonthDays(),JulianLastMonthDay(),GregorianLastMonthDay()
Date/HeisLeapYear Date/HeisLeapYear
NAME
HeisLeapYear -- Checks if a year is a leap year. (V33)
SYNOPSIS
leapyear = date_HeisLeapYear(year);
d0 d0
bool date_HeisLeapYear(const long year);
FUNCTION
HeisLeapYear checks if a year is a leap year.
For years after 1582 see GregorianLeapYear(),
The correction from N. Heis says, that all years devideable by
3200 are no longer leap years!
For years before 1582 see JulianLeapYear().
INPUTS
year - The year which should be checked (from -32768 to 32767)
I think only values from 8 to 32767 are valid, because of
the variant that was done by Augustus!
RESULT
leapyear - true if the year is a leap year, otherwise false.
EXAMPLE
...
if (date_HeisLeapYear(1994))
{
printf("leap year!\n");
}
else
{
printf("no leap year!\n");
}
...
NOTES
A year is now 365.2421875 days!
Use this function only for values from 8 to 8000!
BUGS
No known bugs.
SEE ALSO
JulianLeapYear(),GregorianLeapYear()
Date/HeisMonthDays Date/HeisMonthDays
NAME
HeisMonthDays -- Returns the number of days of a month. (V33)
SYNOPSIS
days = date_HeisMonthDays(month,year);
d0 d0 d1
unsigned short date_HeisMonthDays(const unsigned short month,
const long year);
FUNCTION
HeisMonthDays returns the number of days a month in
a specified year has.
For the year 1582 and the month 10 there are only 21 days,
because of the Gregorian-reform 10 days are deleted from
the month (for more - look out for books about this!)
INPUTS
month - The month from which you want to get the number of days.
year - The year in which the month is.
RESULT
days - The number of days the month uses, or 0 if you use
an incorrect month.
EXAMPLE
unsigned short days;
...
days = date_HeisMonthDays(1,1994);
printf("Days of January 1994 : %hu\n",days);
...
NOTES
Use this function only for years from 8 to 8000!
BUGS
See GregorianMonthDays!
SEE ALSO
HeisLeapYear(),JulianMonthDays(),GregorianMonthDays()
Date/HeisRangeDiff Date/HeisRangeDiff
NAME
HeisRangeDiff -- Calculates the range between 2 dates. (V33.297)
SYNOPSIS
date_HeisRangeDiff(day1,month1,year1,day2,month2,year2,days,months,
years);
d0 d1 d2 d3 d4 d5 a0 a1
a2
void date_HeisRangeDiff(unsigned short day1,
unsigned short month1, long year1, unsigned short day2,
unsigned short month2, long year2, short *const days,
short *const months, long *const years);
void date_HeisRangeDiff(unsigned short day1,
unsigned short month1, long year1, unsigned short day2,
unsigned short month2, long year2, short &days, short &months,
long &years);
FUNCTION
HeisRangeDiff gives you back the number of days, months and years
between two specified dates.
INPUTS
day1 - day of the first date
month1 - month of the first date
year1 - year of the first date
day2 - day of the second date
month2 - month of the second month
year2 - year of the second date
RESULT
days - The number of days between the two dates
(positive if date1 <= date2).
months - The number of months between the two dates
(positive if date1 <= date2).
years - The number of years between the two dates
(positive if date1 <= date2).
EXAMPLE
short days,months;
long years;
...
date_HeisRangeDiff(18,9,1970,25,1,1994);
printf("Age of Kai Hofmann is : %ld years, %hd months, %hd days\n",
years,months,days);
...
NOTES
It is better only to use this function for years from 8 to 8000!
BUGS
If you use on of the dates 5.10.1582 to 14.10.1582 you will get an
incorrect output because these days don't exist!
SEE ALSO
HeisDayDiff(),HeisDiffDateRange(),
JulianRangeDiff(),GregorianRangeDiff()
Date/HeisToJD Date/HeisToJD
NAME
HeisToJD -- Returns the JD for a date. (V33)
SYNOPSIS
jd = date_HeisToJD(day,month,year);
d0 d0 d1 d2
unsigned long date_HeisToJD(const unsigned short day,
const unsigned short month, const long year);
FUNCTION
Returns the JD for a Heis date.
INPUTS
day - day of the date to convert
month - month of the date to convert
year - year of the date to convert
RESULT
jd - This is the JD
EXAMPLE
...
jd = date_HeisToJD(23,1,1994);
...
NOTES
It is better to use this function only from 8 to 3267!
BUGS
unknown.
SEE ALSO
HSYearToJD(),HYearToScaliger(),HeisDayDiff(),JulianToJD(),HeisToJD()
Date/HeisWeek Date/HeisWeek
NAME
HeisWeek -- Gets the number of the week for a specified date. (V33)
SYNOPSIS
weeknr = date_HeisWeek(day,month,year);
d0 d0 d1 d2
unsigned short date_HeisWeek(const unsigned short day,
const unsigned short month, const long year);
FUNCTION
HeisWeek gets the number of the week for a specified date.
INPUTS
day - day of the date
month - month of the date
year - year of the date
RESULT
week - This is the number of the week the specified date lies in.
If the first day in a new year is a Friday, Saturday or
Sunday, this would be the last week of the last year!
If the 29.12. is a Monday, the 30.12. is a Monday or a Tuesday,
the 31.12. is a Monday, Tuesday or a Wednesday this is the
first week of the next year!
EXAMPLE
...
weeknr = date_HeisWeek(4,10,1582);
...
NOTES
It is better only to use this function for years from 8 to 8000!
BUGS
For years < 0 errors could occur.
SEE ALSO
JulianWeek(),GregorianWeek(),HeisWeekday(),HeisDayDiff(),
SetFirstWeekday()
Date/HeisWeekday Date/HeisWeekday
NAME
HeisWeekday -- Gets the weekday of a specified date. (V33)
SYNOPSIS
weekday = date_HeisWeekday(day,month,year);
d0 d0 d1 d2
date_Weekdays date_HeisWeekday(const unsigned short day,
unsigned short month, long year);
FUNCTION
HeisWeekday gets the weekday for a specified date.
INPUTS
day - day of the date
month - month of the date
year - year of the date
RESULT
weekday - This result is of type:
date_Weekdays = {date_dayerr,date_Monday,date_Tuesday,
date_Wednesday,date_Thrusday,date_Friday,
date_Saturday,date_Sunday};
date_dayerr will show you, that an error occurs!
EXAMPLE
...
weekday = date_HeisWeekday(22,1,1994);
if (weekday == date_dayerr)
{
...
}
...
NOTES
It is better only to use this function for years from 8 to 8000!
In this version date_dayerr will only occur for the lost days :)
BUGS
It is not possible to use year < 0 (see JulianWeekday() for more).
SEE ALSO
JulianWeekday(),GregorianWeekday()
Date/HeisWWtoDM Date/HeisWWtoDM
NAME
HeisWWtoDM -- Convert Weekday,Week to Day,Month. (V33.243)
SYNOPSIS
date_HeisWWtoDM(weekday,week,year,dday,dmonth,dyear);
d0 d1 d2 a0 a1 a2
void date_HeisWWtoDM(const date_Weekdays weekday,
const unsigned short week, const long year,
unsigned short *const dday, unsigned short *const dmonth,
long *const dyear);
void date_HeisWWtoDM(const date_Weekdays weekday,
const unsigned short week, const long year,
unsigned short &dday, unsigned short &dmonth,
long &dyear);
FUNCTION
Converts weekday,week to day,month.
INPUTS
weekday - weekday of the date to convert
week - week of the date to convert
year - year of the date to convert
RESULT
day - day of the converted date
month - month of the converted date
year - year of the converted date
EXAMPLE
unsigned short day,month;
long year;
...
date_HeisWWtoDM(date_Thursday,14,1997,&day,&month,&year);
/* 1997-04-03 */
...
NOTES
It is better to use this function only from 8 to 8000!
Be careful, the resulting year might be different from the input
year!
BUGS
unknown.
SEE ALSO
GregorianWWtoDM(), HeisWWtoDM()
Date/HeisYearDays Date/HeisYearDays
NAME
HeisYearDays -- Gives back the number of days in a year. (V33)
SYNOPSIS
days = date_HeisYearDays(year);
d0 d0
unsigned short date_HeisYearDays(const long year);
FUNCTION
HeisYearDays gives you back the number of days in
a specified year.
INPUTS
year - The year in which to count the days.
RESULT
days - The number of days the year uses.
EXAMPLE
unsigned short days;
...
days = date_HeisYearDays(1994);
printf("Days of 1994 : %hu\n",days);
...
NOTES
It is better only to use this function for years from 8 to 8000!
BUGS
No known bugs.
SEE ALSO
HeisMonthDays(),JulianYearDays(),GregorianYearDays()
Date/HSYearToJD Date/HSYearToJD
NAME
HSYearToJD -- Calcs the JD from a Scaliger year. (V33)
SYNOPSIS
jd = date_HSYearToJD(syear);
d0 d0
unsigned long date_HSYearToJD(const unsigned long syear);
FUNCTION
Returns the Julianday of a Scaliger year.
INPUTS
syear - Scaliger year
RESULT
jd - The Julianday
EXAMPLE
...
jd = date_HSYearToJD(6700);
...
NOTES
It is better to use this function only from 4707 to 7981!
In this version only date_GSYearToJD() is called, because the
Scaliger period is only valid to 3268
BUGS
unknown.
SEE ALSO
JSYearToJD(),GSYearToJD()
Date/HYearToScaliger Date/HYearToScaliger
NAME
HYearToScaliger -- Returns the year as Scaliger year. (V33)
SYNOPSIS
syear = date_HYearToScaliger(year);
d0 d0
unsigned long date_HYearToScaliger(const long year);
FUNCTION
Returns the Scaliger year.
INPUTS
year - Heis year
RESULT
syear - The Scaliger year
EXAMPLE
...
syear = date_HYearToScaliger(1994);
...
NOTES
It is better to use this function only from 8 to 8000!
BUGS
The Scaliger period is defined to 3268!!!.
SEE ALSO
JYearToScaliger(),GYearToScaliger()
Date/JDToDate Date/JDToDate
NAME
JDToDate -- Returns the date for a JD. (V33.310)
SYNOPSIS
date_JDToDate(jd,day,month,year,calendar);
d0 a0 a1 a2 d1
void date_JDToDate(const unsigned long jd, unsigned short *const day,
unsigned short *const month, long *const year,
const date_Calendars calendar);
void date_JDToDate(const unsigned long jd, unsigned short &day,
unsigned short &month, long &year,
const date_Calendars calendar);
FUNCTION
Returns the date for a JD.
INPUTS
jd - This is the given JD.
calendar - Calendar system to use
RESULT
day - Day of the date.
month - Month of the date.
year - Year of the date.
EXAMPLE
...
date_JDToDate(2299161,&day,&month,&year,date_Gregorian);
...
NOTES
It is better to use this function only from 1718867 to 2889835!
BUGS
unknown.
SEE ALSO
JDToJulian(),JDToGregorian(),JDToHeis()
Date/JDToGregorian Date/JDToGregorian
NAME
JDToGregorian -- Returns the Gregorian date for a JD. (V33.095)
SYNOPSIS
date_JDToGregorian(jd,day,month,year);
d0 a0 a1 a2
void date_JDToGregorian(const unsigned long jd, unsigned short *const day,
unsigned short *const month, long *const year);
void date_JDToGregorian(const unsigned long jd, unsigned short &day,
unsigned short &month, long &year);
FUNCTION
Returns the Gregorian date for a JD.
INPUTS
jd - This is the given JD.
RESULT
day - Day of the date.
month - Month of the date.
year - Year of the date.
EXAMPLE
...
date_JDToGregorian(2299161,&day,&month,&year);
...
NOTES
It is better to use this function only from 1718867 to 2889835!
BUGS
unknown.
SEE ALSO
JDToJulian(),JDToHeis()
Date/JDToHeis Date/JDToHeis
NAME
JDToHeis -- Returns the Heis date for a JD. (V33.095)
SYNOPSIS
date_JDToHeis(jd,day,month,year);
d0 a0 a1 a2
void date_JDToHeis(const unsigned long jd, unsigned short *const day,
unsigned short *const month, long *const year);
void date_JDToHeis(const unsigned long jd, unsigned short &day,
unsigned short &month, long &year);
FUNCTION
Returns the Heis date for a JD.
INPUTS
jd - This is the given JD.
RESULT
day - Day of the date.
month - Month of the date.
year - Year of the date.
EXAMPLE
...
date_JDToHeis(2299161,&day,&month,&year);
...
NOTES
At the moment this is only a dummy to date_JDToGregorian, so:
It is better to use this function only from 1718867 to 2889835!
BUGS
unknown.
SEE ALSO
JDToJulian(), JDToGregorian()
Date/JDToJulian Date/JDToJulian
NAME
JDToJulian -- Returns the Julian date for a JD. (V33.095)
SYNOPSIS
date_JDToJulian(jd,day,month,year);
d0 a0 a1 a2
void date_JDToJulian(const unsigned long jd, unsigned short *const day,
unsigned short *const month, long *const year);
void date_JDToJulian(const unsigned long jd, unsigned short &day,
unsigned short &month, long &year);
FUNCTION
Returns the Julian date for a JD.
INPUTS
jd - This is the given JD.
RESULT
day - Day of the date.
month - Month of the date.
year - Year of the date.
EXAMPLE
...
date_JDToJulian(2299160,&day,&month,&year);
...
NOTES
It is better to use this function only from 1718867 to 2299160!
BUGS
unknown.
SEE ALSO
JDToGregorian(),JDToHeis()
Date/JDtoMJD Date/JDtoMJD
NAME
JDtoMJD -- Switches from JD to MJD. (V33)
SYNOPSIS
mjd = date_JDtoMJD(jd);
d0 d0
unsigned long date_JDtoMJD(const unsigned long jd);
FUNCTION
Returns the Modified Julianday of a Julianday.
INPUTS
jd - Julianday
RESULT
mjd - The Modified Julianday
EXAMPLE
...
mjd = date_JDtoMJD(2449354);
...
NOTES
none
BUGS
Only use this function for jd > 2400001, because mjd is only
defined for this, otherwise system will crash!
SEE ALSO
MJDtoJD()
Date/JDToTime Date/JDToTime
NAME
JDToTime -- Returns the real time for a JD time. (V33)
SYNOPSIS
time_JDToTime(jd,rhour,rmin,rsec);
d0 a0 a1 a2
void time_JDToTime(float jd, unsigned short *const rhour,
unsigned short *const rmin, unsigned short *const rsec);
void time_JDToTime(float jd, unsigned short &rhour,
unsigned short &rmin, unsigned short &rsec);
FUNCTION
Returns the real time for a JD time.
INPUTS
jd - JD time
RESULT
rhour - 24 hour real time
rmin - real minutes
rsec - real seconds
EXAMPLE
...
time_JDToTime(0.76543,&rhour,&rmin,&rsec);
...
NOTES
none.
BUGS
If jd is > 0 (including days) there will be occur arithmetic bugs!
SEE ALSO
TimeToJD()
Date/JSYearToJD Date/JSYearToJD
NAME
JSYearToJD -- Calcs the JD from a Scaliger year. (V33)
SYNOPSIS
jd = date_JSYearToJD(syear);
d0 d0
unsigned long date_JSYearToJD(const unsigned long syear);
FUNCTION
Returns the Julianday of a Scaliger year.
INPUTS
syear - Scaliger year
RESULT
jd - The Julianday
EXAMPLE
...
jd = date_JSYearToJD(4800);
...
NOTES
It is better to use this function only from 4707 to 6295!
BUGS
unknown.
SEE ALSO
GSYearToJD(),HSYearToJD()
Date/JulianDayDiff Date/JulianDayDiff
NAME
JulianDayDiff -- Calculates the days between 2 dates. (V33)
SYNOPSIS
days = date_JulianDayDiff(day1,month1,year1,day2,month2,year2);
d0 d0 d1 d2 d3 d4 d5
long date_JulianDayDiff(const unsigned short day1, unsigned short month1,
long year1, const unsigned short day2, unsigned short month2,
long year2);
FUNCTION
JulianDayDiff gives you back the number of days between
two specified dates.
INPUTS
day1 - day of the first date
month1 - month of the first date
year1 - year of the first date
day2 - day of the second date
month2 - month of the second month
year2 - year of the second date
RESULT
days - The number of days between the two dates
(positive if date1 <= date2).
EXAMPLE
long days;
...
days = date_JulianDayDiff(18,9,1970,22,1,1994);
printf("Age of Kai Hofmann in days : %ld\n",days);
...
NOTES
It is better only to use this function for years from 8 to 1582!
BUGS
No known bugs.
SEE ALSO
JulianLeapYear(),JulianMonthDays(),JulianYearDays(),
GregorianDayDiff(),HeisDayDiff()
Date/JulianDaysAfterWeekday Date/JulianDaysAfterWeekday
NAME
JulianDaysAfterWeekday -- Returns the diff to the wday after. (V33)
SYNOPSIS
days = date_JulianDaysAfterWeekday(day,month,year,weekday);
d0 d0 d1 d2 d3
unsigned short date_JulianDaysAfterWeekday(const unsigned short day,
const unsigned short month, const long year,
const date_Weekdays weekday);
FUNCTION
Returns the days to the weekday after the specified date.
If you specify the 22.1.1994 (Saturday) and Thursday
you get back 5!
If you specify the 22.1.1994 and Saturday you get back 0
(the same day)!
INPUTS
day - day of the date
month - month of the date
year - year of the date
weekday - weekday to search for building difference
RESULT
days - The days after to the searched weekday.
EXAMPLE
...
days = date_JulianDaysAfterWeekday(22,1,1994,Thursday);
...
NOTES
It is better to use this function only from 8 to 1582!
BUGS
See JulianWeekday()!
SEE ALSO
JulianWeekday(),GregorianDaysAfterWeekday(),HeisDaysAfterWeekday()
Date/JulianDaysBeforeWeekday Date/JulianDaysBeforeWeekday
NAME
JulianDaysBeforeWeekday -- Returns the diff to the wday before. (V33)
SYNOPSIS
days = date_JulianDaysBeforeWeekday(day,month,year,weekday);
d0 d0 d1 d2 d3
unsigned short date_JulianDaysBeforeWeekday(const unsigned short day,
const unsigned short month, const long year,
const date_Weekdays weekday);
FUNCTION
Returns the days to the weekday before the specified date.
If you specify the 22.1.1994 (Saturday) and Thursday
you get back 2!
If you specify the 22.1.1994 and Saturday you get back 0
(the same day)!
INPUTS
day - day of the date
month - month of the date
year - year of the date
weekday - weekday to search for building difference
RESULT
days - The days gets you back to the searched weekday (0-6)
If you get back an 8 an error occurs!
EXAMPLE
...
days = date_JulianDaysBeforeWeekday(22,1,1994,Thursday);
...
NOTES
It is better to use this function only from 8 to 02.1582!
BUGS
See JulianWeekday()!
SEE ALSO
JulianWeekday(),GregorianDaysBeforeWeekday(),HeisDaysBeforeWeekday()
Date/JulianDiffDate Date/JulianDiffDate
NAME
JulianDiffDate -- Returns the date for a diff to another date. (V33)
SYNOPSIS
date_JulianDiffDate(day,month,year,days,dday,dmonth,dyear);
d0 d1 d2 d3 a0 a1 a2
void date_JulianDiffDate(const unsigned short day,
const unsigned short month, const long year, long days,
unsigned short *const dday, unsigned short *const dmonth,
long *const dyear);
void date_JulianDiffDate(const unsigned short day,
const unsigned short month, const long year, long days,
unsigned short &dday, unsigned short &dmonth, long &dyear);
FUNCTION
Returns the date which lies days before/after the specified date.
INPUTS
day - day of the date
month - month of the date
year - year of the date
days - difference to the date in days
RESULT
dday - Destination day
dmonth - Destination month
dyear - Destination year
EXAMPLE
...
date_JulianDiffDate(23,1,1994,7,&dday,&dmonth,&dyear);
...
NOTES
This function is OBSOLETE - please use JulianDiffDateRange()
instead!
It is better to use this function only from 8 to 1582!
BUGS
unknown.
SEE ALSO
JulianDayDiff(),JulianMonthDays(),GregorianDiffDate(),HeisDiffDate()
Date/JulianDiffDateRange Date/JulianDiffDateRange
NAME
JulianDiffDateRange -- Calc new date from old one and diff. (V33.296)
SYNOPSIS
date_JulianDiffDateRange(day,month,year,days,months,
years,dday,dmonth,dyear);
d0 d1 d2 d3 d4
d5 a0 a1 a2
void date_JulianDiffDateRange(const unsigned short day,
const unsigned short month, const long year, long days,
long months, long years, unsigned short *const dday,
unsigned short *const dmonth, long *const dyear);
void date_JulianDiffDateRange(const unsigned short day,
const unsigned short month, const long year, long days,
long months, long years, unsigned short &dday,
unsigned short &dmonth, long &dyear);
FUNCTION
Returns the date which lies diffrange before/after the specified date.
INPUTS
day - day of the date
month - month of the date
year - year of the date
days - difference to the date in days
months - difference to the date in months
years - difference to the date in years
RESULT
dday - Destination day
dmonth - Destination month
dyear - Destination year
EXAMPLE
...
date_JulianDiffDateRange(23,1,1994,0,0,1,&dday,&dmonth,&dyear);
...
NOTES
It is better to use this function only from 8 to 1582!
BUGS
unknown.
SEE ALSO
JulianDiffDate(),JulianRangeDiff(),GregorianDiffDateRange(),
HeisDiffDateRange()
Date/JulianEaster Date/JulianEaster
NAME
JulianEaster -- Returns the date of Easter in a year (V33.097)
SYNOPSIS
date_JulianEaster(year,dday,dmonth);
d0 a0 a1
void date_JulianEaster(const long year, unsigned short *const dday,
unsigned short *const dmonth);
void date_JulianEaster(const long year, unsigned short &dday,
unsigned short &dmonth);
FUNCTION
Returns the date of Easter for a specified year.
INPUTS
year - Easter is calculated for this year
RESULT
dday - day of Easter Sunday
dmonth - month of Easter Sunday
EXAMPLE
...
date_JulianEaster(1994,&dday,&dmonth);
...
NOTES
Use this only for 31 to 1582!
BUGS
None.
SEE ALSO
GregorianEaster(),HeisEaster()
Date/JulianLastMonthDay Date/JulianLastMonthDay
NAME
JulianLastMonthDay -- The number of last day in a month. (V33.234)
SYNOPSIS
day = date_JulianLastMonthDay(month,year);
d0 d0 d1
unsigned short date_JulianLastMonthDay(const unsigned short month,
const long year);
FUNCTION
JulianLastMonthDay returns the number of the last day for a given
month.
INPUTS
month - The month from which you want to get the last day.
year - The year in which the month is.
RESULT
day - The number of the last day the month uses, or 0 if you use
an incorrect month.
EXAMPLE
...
day = date_JulianLastMonthDay(1,1994); /* 31 */
...
NOTES
It is better only to use this function for years from 8 to 09.1582!
BUGS
No known bugs.
SEE ALSO
JulianMonthDays(),GregorianLastMonthDay(),HeisLastMonthDay()
Date/JulianLeapYear Date/JulianLeapYear
NAME
JulianLeapYear -- Checks if a year is a leap year. (V33)
SYNOPSIS
leapyear = date_JulianLeapYear(year);
d0 d0
bool date_JulianLeapYear(const long year);
FUNCTION
JulianLeapYear checks if a year is a leap year in the Julian calendar
For years after Chr. it checks if the year is devideable by 4.
For years before Chr. a leap year must have a modulo 4 value of 1
INPUTS
year - The year which should be checked (from -32768 to 32767)
I think only values from 8 to 32767 are valid, because of
the variant that was done by Augustus!
RESULT
leapyear - true if the year is a leap year, otherwise false.
EXAMPLE
...
if (date_JulianLeapYear(1994))
{
printf("leap year!\n");
}
else
{
printf("no leap year!\n");
}
...
NOTES
A year is 365.25 days long!
Use this function only for values from 8 to 1582!
BUGS
No known bugs.
SEE ALSO
GregorianLeapYear(),HeisLeapYear()
Date/JulianMonthDays Date/JulianMonthDays
NAME
JulianMonthDays -- Returns the number of days of a month. (V33)
SYNOPSIS
days = date_JulianMonthDays(month,year);
d0 d0 d1
unsigned short date_JulianMonthDays(const unsigned short month,
const long year);
FUNCTION
JulianMonthDays returns the number of days a month in
a specified year has.
INPUTS
month - The month from which you want to get the number of days.
year - The year in which the month is.
RESULT
days - The number of days the month uses, or 0 if you use
an incorrect month.
EXAMPLE
unsigned short days;
...
days = date_JulianMonthDays(1,1994);
printf("Days of January 1994 : %hu\n",days);
...
NOTES
It is better only to use this function for years from 8 to 09.1582!
BUGS
No known bugs.
SEE ALSO
JulianLeapYear(),GregorianMonthDays(),HeisMonthDays()
Date/JulianRangeDiff Date/JulianRangeDiff
NAME
JulianRangeDiff -- Calculates the range between 2 dates. (V33.297)
SYNOPSIS
date_JulianRangeDiff(day1,month1,year1,day2,month2,year2,days,months,
years);
d0 d1 d2 d3 d4 d5 a0 a1
a2
void date_JulianRangeDiff(unsigned short day1,
unsigned short month1, long year1, unsigned short day2,
unsigned short month2, long year2, short *const days,
short *const months, long *const years);
void date_JulianRangeDiff(unsigned short day1,
unsigned short month1, long year1, unsigned short day2,
unsigned short month2, long year2, short &days, short &months,
long &years);
FUNCTION
JulianRangeDiff gives you back the number of days, months and years
between two specified dates.
INPUTS
day1 - day of the first date
month1 - month of the first date
year1 - year of the first date
day2 - day of the second date
month2 - month of the second month
year2 - year of the second date
RESULT
days - The number of days between the two dates
(positive if date1 <= date2).
months - The number of months between the two dates
(positive if date1 <= date2).
years - The number of years between the two dates
(positive if date1 <= date2).
EXAMPLE
short days,months;
long years;
...
date_JulianRangeDiff(18,9,1970,25,1,1998,&days,&months,&years);
printf("Age of Kai Hofmann is : %ld years, %hd months, %hd days\n",
years,months,days);
...
NOTES
It is better only to use this function for years from 8 to 1582!
BUGS
No known bugs.
SEE ALSO
JulianDayDiff(),JulianDiffDateRange(),GregorianRangeDiff(),
HeisRangeDiff()
Date/JulianToJD Date/JulianToJD
NAME
JulianToJD -- Returns the JD for a date. (V33)
SYNOPSIS
jd = date_JulianToJD(day,month,year);
d0 d0 d1 d2
unsigned long date_JulianToJD(const unsigned short day,
const unsigned short month, const long year);
FUNCTION
Returns the JD for a Julian date.
INPUTS
day - day of the date to convert
month - month of the date to convert
year - year of the date to convert
RESULT
jd - This is the JD
EXAMPLE
...
jd = date_JulianToJD(23,1,1994);
...
NOTES
It is better to use this function only from 8 to 1582!
BUGS
unknown.
SEE ALSO
JSYearToJD(),JYearToScaliger(),JulianDayDiff(),GregorianToJD(),
HeisToJD()
Date/JulianWeek Date/JulianWeek
NAME
JulianWeek -- Gets the number of the week for a specified date. (V33)
SYNOPSIS
weeknr = date_JulianWeek(day,month,year);
d0 d0 d1 d2
unsigned short date_JulianWeek(const unsigned short day,
const unsigned short month, const long year);
FUNCTION
JulianWeek gets the number of the week for a specified date.
INPUTS
day - day of the date
month - month of the date
year - year of the date
RESULT
week - This is the number of the week the specified date lies in.
If the first day in a new year is a Friday, Saturday or
Sunday, this would be the last week of the last year!
If the 29.12. is a Monday, the 30.12. is a Monday or a Tuesday,
the 31.12. is a Monday, Tuesday or a Wednesday this is the
first week of the next year!
EXAMPLE
...
weeknr = date_JulianWeek(4,10,1582);
...
NOTES
It is is better only to use this function for years from 8 to 1582!
BUGS
For years < 0 errors could occur.
SEE ALSO
GregorianWeek(),HeisWeek(),JulianWeekday(),JulianDayDiff(),
SetFirstWeekday()
Date/JulianWeekday Date/JulianWeekday
NAME
JulianWeekday -- Gets the weekday of a specified date. (V33)
SYNOPSIS
weekday = date_JulianWeekday(day,month,year);
d0 d0 d1 d2
date_Weekdays date_JulianWeekday(const unsigned short day,
unsigned short month, long year);
FUNCTION
JulianWeekday gets the weekday for a specified date.
INPUTS
day - day of the date
month - month of the date
year - year of the date
RESULT
weekday - This result is of type:
date_Weekdays = {date_dayerr,date_Monday,date_Tuesday,
date_Wednesday,date_Thursday,date_Friday,
date_Saturday,date_Sunday};
dayerr will show you, that an error occurs!
EXAMPLE
...
weekday = date_JulianWeekday(4,10,1582);
if (weekday == dayerr)
{
...
}
...
NOTES
It is better only to use this function for years from 8 to 4.10.1582!
In this version no dayerr will occur!
BUGS
For years <= 0 errors could occur, or systemcrashs(?).
SEE ALSO
GregorianWeekday(),HeisWeekday()
Date/JulianWWtoDM Date/JulianWWtoDM
NAME
JulianWWtoDM -- Convert Weekday,Week to Day,Month. (V33.243)
SYNOPSIS
date_JulianWWtoDM(weekday,week,year,dday,dmonth,dyear);
d0 d1 d2 a0 a1 a2
void date_JulianWWtoDM(const date_Weekdays weekday,
const unsigned short week, const long year,
unsigned short *const dday, unsigned short *const dmonth,
long *const dyear);
void date_JulianWWtoDM(const date_Weekdays weekday,
const unsigned short week, const long year,
unsigned short &dday, unsigned short &dmonth,
long &dyear);
FUNCTION
Converts weekday,week to day,month.
INPUTS
weekday - weekday of the date to convert
week - week of the date to convert
year - year of the date to convert
RESULT
day - day of the converted date
month - month of the converted date
year - year of the converted date
EXAMPLE
unsigned short day,month;
long year;
...
date_JulianWWtoDM(date_Thursday,14,1997,&day,&month,&year);
/* 1997-04-03 */
...
NOTES
It is better to use this function only from 8 to 1582!
Be careful, the resulting year might be different from the input
year!
BUGS
unknown.
SEE ALSO
GregorianWWtoDM(), HeisWWtoDM()
Date/JulianYearDays Date/JulianYearDays
NAME
JulianYearDays -- Gives back the number of days in a year. (V33)
SYNOPSIS
days = date_JulianYearDays(year);
d0 d0
unsigned short date_JulianYearDays(const long year);
FUNCTION
JulianYearDays gives you back the number of days in
a specified year.
INPUTS
year - The year in which to count the days.
RESULT
days - The number of days the year uses.
EXAMPLE
unsigned short days;
...
days = date_JulianYearDays(1994);
printf("Days of 1994 : %hu\n",days);
...
NOTES
It is better only to use this function for years from 8 to 1581!
BUGS
No known bugs.
SEE ALSO
JulianMonthDays(),GregorianYearDays(),HeisYearDays()
Date/JYearToScaliger Date/JYearToScaliger
NAME
JYearToScaliger -- Returns the year as Scaliger year. (V33)
SYNOPSIS
syear = date_JYearToScaliger(year);
d0 d0
unsigned long date_JYearToScaliger(const long year);
FUNCTION
Returns the Scaliger year.
INPUTS
year - Julian year
RESULT
syear - The Scaliger year
EXAMPLE
...
syear = date_JYearToScaliger(1582);
...
NOTES
It is better to use this function only from 8 to 1582!
BUGS
unknown.
SEE ALSO
GYearToScaliger(),HYearToScaliger()
Date/LastMonthDay Date/LastMonthDay
NAME
LastMonthDay -- The number of last day in a month. (V33.310)
SYNOPSIS
day = date_LastMonthDay(month,year,calendar);
d0 d0 d1 d2
unsigned short date_LastMonthDay(const unsigned short month,
const long year, const date_Calendars calendar);
FUNCTION
LastMonthDay returns the number of the last day for a given
month.
INPUTS
month - The month from which you want to get the last day.
year - The year in which the month is.
calendar - Calendar system to use
RESULT
days - The number of the last day the month uses, or 0 if you use
an incorrect month.
EXAMPLE
...
day = date_LastMonthDay(1,1994,date_Gregorian); /* 31 */
...
NOTES
Use this function only for years from 8 to 3199!
BUGS
none.
SEE ALSO
JulianLastMonthDay(),GregorianLastMonthDay(),HeisLastMonthDay()
Date/LeapYear Date/LeapYear
NAME
LeapYear -- Checks if a year is a leap year. (V33.310)
SYNOPSIS
leapyear = date_LeapYear(year,calendar);
d0 d0 d1
bool date_LeapYear(const long year, const date_Calendars calendar);
FUNCTION
LeapYear checks if a year is a leap year.
INPUTS
year - The year which should be checked (from -32768 to 32767)
I think only values from 8 to 3200 are valid, because of
the variant that was done by Augustus!
calendar - Calendar system to use
RESULT
leapyear - true if the year is a leap year, otherwise false.
EXAMPLE
...
if (date_LeapYear(1994,date_Gregorian))
{
printf("leap year!\n");
}
else
{
printf("no leap year!\n");
}
...
NOTES
Use this function only for values from 8 to 8000!
BUGS
No known bugs.
SEE ALSO
JulianLeapYear(),GregorianLeapYear(),HeisLeapYear()
Date/LMT Date/LMT
NAME
LMT -- Calculates your local time in your timezone (V33)
SYNOPSIS
secs = time_LMT(secs,meridian,pos);
d0 d0 d1 d2
unsigned long time_LMT(const unsigned long secs,
const float meridiandegree, const float posdegree);
FUNCTION
Calculates your Local Mean Time of your place!
INPUTS
secs - Seconds of the running day (hours*3600+min*60+sec)
meridian - Degrees of your timezone-meridian
pos - Degrees of your place
RESULT
secs - Local seconds of the running day
EXAMPLE
...
secs = time_LMT(76080,-15.0,-8.923055556);
...
NOTES
none
BUGS
No errorcheck, if you put in valid degrees (-180 to +180)
SEE ALSO
Date/LocalToGMT Date/LocalToGMT
NAME
LocalToGMT -- Converts a local time to GMT (V33.300)
SYNOPSIS
datetime_LocalToGMT(ljd,lsecs,DST,zonemin,gjd,gsecs);
d0 d1 d2 d3 a0 a1
void datetime_LocalToGMT(const unsigned long ljd,
const unsigned long lsecs, const bool DST,
const short zonemin, unsigned long *const gjd,
unsigned long *const gsecs);
void datetime_LocalToGMT(const unsigned long ljd,
const unsigned long lsecs, const bool DST,
const short zonemin, unsigned long &gjd,
unsigned long &gsecs);
FUNCTION
Converts a local date/time pair into a GMT date/time pair.
The conversion considers the local daylight savings time.
INPUTS
ljd - Local Julian Date
lsecs - Local time in seconds
DST - Daylight saving status
zonemin - Time that was added to GMT time to get the local time
zone (in minutes -779 to +779)
RESULT
gjd - GMT Julian Date
gsecs - GMT time in seconds
EXAMPLE
unsigned long gjd,gsecs;
...
datetime_LocalToGMT(2450919,37500,true,+60,&gjd,&gsecs);
...
NOTES
None.
BUGS
No errorcheck, if you use a valid date/time.
SEE ALSO
GMTToLocal(), JulianToJD(), GregorianToJD(), HeisToJD(),
JDToJulian(), JDToGregorian(), JDToHeis(), TimeToSec(), SecToTime(),
TimeZoneFactor()
Date/MJDtoJD Date/MJDtoJD
NAME
MJDtoJD -- Switches from MJD to JD. (V33)
SYNOPSIS
jd = date_MJDtoJD(mjd);
d0 d0
unsigned long date_MJDtoJD(const unsigned long mjd);
FUNCTION
Returns the Julianday of a Modified Julianday.
INPUTS
mjd - Modified Julianday
RESULT
jd - The Julianday
EXAMPLE
...
jd = date_MJDtoJD(49353);
...
NOTES
none
BUGS
unknown.
SEE ALSO
JDtoMJD()
Date/MonthDays Date/MonthDays
NAME
MonthDays -- Returns the number of days of a month. (V33.310)
SYNOPSIS
days = date_MonthDays(month,year,calendar);
d0 d0 d1 d2
unsigned short date_MonthDays(const unsigned short month,
const long year, const date_Calendars calendar);
FUNCTION
MonthDays returns the number of days a month in
a specified year has.
For the year 1582 and the month 10 there are only 21 days,
because of the -reform 10 days are deleted from
the month (for more - look out for books about this!)
INPUTS
month - The month from which you want to get the number of days.
year - The year in which the month is.
calendar - Calendar system to use
RESULT
days - The number of days the month uses, or 0 if you use
an incorrect month.
EXAMPLE
unsigned short days;
...
days = date_MonthDays(1,1994,date_Gregorian);
printf("Days of January 1994 : %hu\n",days);
...
NOTES
Use this function only for years from 8 to 8000!
BUGS
none.
SEE ALSO
JulianMonthDays(),GregorianMonthDays(),HeisMonthDays()
Date/MonthShortText Date/MonthShortText
NAME
MonthShortText -- Get the month as short text string. (V33.092)
SYNOPSIS
maxlen = date_MonthShortText(month,mtext,lang);
d0 d0 a0 d1
unsigned short date_MonthShortText(const unsigned short month,
char *const mtext, const date_Languages lang);
FUNCTION
This function gets the short text string for the month-number.
INPUTS
month - Month to transform into a string.
mtext - Pointer to a string to fill in the short month-text.
lang - Language for which you want the short month-text.
RESULT
maxlen - Maximum possible length for the short month-string, this
should help you if you want to justify the string right or if
you want to center it (Normal is three!).
0 indicates an error!
EXAMPLE
...
char mtxt[4];
...
maxlen = date_MonthShortText(12,&mtxt,English);
...
NOTES
Languages:
Locale : This is an Amiga >= OS2.1 only feature, for <= OS2.0
and other systems it will return English text!
BUGS
In this version there is no check, if there is enough space in
wtext!
SEE ALSO
WeekdayText(),WeekdayShortText(),MonthText()
Date/MonthText Date/MonthText
NAME
MonthText -- Get the month as text string. (V33.091)
SYNOPSIS
maxlen = date_MonthText(month,mtext,lang);
d0 d0 a0 d1
unsigned short date_MonthText(const unsigned short month,
char *const mtext, const date_Languages lang);
FUNCTION
This function gets the text string for the month-number.
INPUTS
month - Month to transform into a string.
mtext - Pointer to a string to fill in the month-text.
lang - Language for which you want the month-text.
RESULT
maxlen - Maximum possible length for the month-string, this should
help you if you want to justify the string right or if you
want to center it!
0 indicates an error!
EXAMPLE
...
char mtxt[20];
...
maxlen = date_MonthText(12,&mtxt,English);
...
NOTES
Languages:
Locale : This is an Amiga >= OS2.1 only feature, for <= OS2.0
and other systems it will return English text!
BUGS
In this version there is no check, if there is enough space in
wtext!
SEE ALSO
WeekdayText(),WeekdayShortText(),MonthShortText()
Date/NextValidDate Date/NextValidDate
NAME
NextValidDate -- Returns the next valid date (V33.310)
SYNOPSIS
date_NextValidDate(day,month,year,dday,dmonth,dyear,calendar);
d0 d1 d2 a0 a1 a2 d3
void date_NextValidDate(const unsigned short day,
const unsigned short month, const long year,
unsigned short *const dday, unsigned short *const dmonth,
long *const dyear, const date_Calendars calendar);
void date_NextValidDate(const unsigned short day,
const unsigned short month, const long year,
unsigned short &dday, unsigned short &dmonth, long &dyear,
const date_Calendars calendar);
FUNCTION
Returns the next valid date after a given one.
INPUTS
day - Day of the date.
month - Month of the date.
year - Year of the date.
calendar - Calendar system to use
RESULT
dday - Day of the next valid date
dmonth - Month of the next valid date
dyear - Year of the next valid date
EXAMPLE
...
date_NextValidDate(29,2,2000,&day,&month,&year,date_Gregorian);
...
NOTES
None.
BUGS
None.
SEE ALSO
ValidDate(),NextValidJulianDate(),NextValidGregorianDate(),
NextValidHeisDate(),PreviousValidDate()
Date/NextValidGregorianDate Date/NextValidGregorianDate
NAME
NextValidGregorianDate -- Returns the next valid date (V33.236)
SYNOPSIS
date_NextValidGregorianDate(day,month,year,dday,dmonth,dyear);
d0 d1 d2 a0 a1 a2
void date_NextValidGregorianDate(const unsigned short day,
const unsigned short month, const long year,
unsigned short *const dday, unsigned short *const dmonth,
long *const dyear);
void date_NextValidGregorianDate(const unsigned short day,
const unsigned short month, const long year,
unsigned short &dday, unsigned short &dmonth, long &dyear);
FUNCTION
Returns the next valid date after a given one.
INPUTS
day - Day of the date.
month - Month of the date.
year - Year of the date.
RESULT
dday - Day of the next valid date
dmonth - Month of the next valid date
dyear - Year of the next valid date
EXAMPLE
...
date_NextValidGregorianDate(29,2,2000,&day,&month,&year);
...
NOTES
None.
BUGS
None.
SEE ALSO
ValidGregorianDate(),NextValidJulianDate(),NextValidHeisDate(),
PreviousValidGregorianDate()
Date/NextValidHeisDate Date/NextValidHeisDate
NAME
NextValidHeisDate -- Returns the next valid date (V33.235)
SYNOPSIS
date_NextValidHeisDate(day,month,year,dday,dmonth,dyear);
d0 d1 d2 a0 a1 a2
void date_NextValidHeisDate(const unsigned short day,
const unsigned short month, const long year,
unsigned short *const dday, unsigned short *const dmonth,
long *const dyear);
void date_NextValidHeisDate(const unsigned short day,
const unsigned short month, const long year,
unsigned short &dday, unsigned short &dmonth, long &dyear);
FUNCTION
Returns the next valid date after a given one.
INPUTS
day - Day of the date.
month - Month of the date.
year - Year of the date.
RESULT
dday - Day of the next valid date
dmonth - Month of the next valid date
dyear - Year of the next valid date
EXAMPLE
...
date_NextValidHeisDate(29,2,2000,&day,&month,&year);
...
NOTES
None.
BUGS
None.
SEE ALSO
ValidHeisDate(),NextValidJulianDate(),NextValidGregorianDate(),
PreviousValidHeisDate()
Date/NextValidJulianDate Date/NextValidJulianDate
NAME
NextValidJulianDate -- Returns the next valid date (V33.236)
SYNOPSIS
date_NextValidJulianDate(day,month,year,dday,dmonth,dyear);
d0 d1 d2 a0 a1 a2
void date_NextValidJulianDate(const unsigned short day,
const unsigned short month, const long year,
unsigned short *const dday, unsigned short *const dmonth,
long *const dyear);
void date_NextValidJulianDate(const unsigned short day,
const unsigned short month, const long year,
unsigned short &dday, unsigned short &dmonth, long &dyear);
FUNCTION
Returns the next valid date after a given one.
INPUTS
day - Day of the date.
month - Month of the date.
year - Year of the date.
RESULT
dday - Day of the next valid date
dmonth - Month of the next valid date
dyear - Year of the next valid date
EXAMPLE
...
date_NextValidJulianDate(29,2,2000,&day,&month,&year);
...
NOTES
None.
BUGS
None.
SEE ALSO
ValidJulianDate(),NextValidGregorianDate(),NextValidHeisDate(),
PreviousValidJulianDate()
Date/NumToDate Date/NumToDate
NAME
NumToDate -- Returns the real date for a numeric time. (V33.250)
SYNOPSIS
date_NumToDate(num,day,month,year);
d0 a0 a1 a2
void date_NumToDate(long num, unsigned short *const day,
unsigned short *const month, long *const year);
void date_NumToDate(long num, unsigned short &day,
unsigned short &month, long &year);
FUNCTION
Returns the real date for a numeric time.
INPUTS
num - Date in numeric format
RESULT
day - Day of the date.
month - Month of the date.
year - Year of the date.
EXAMPLE
...
date_NumToDate(19970628,&day,&month,&year);
...
NOTES
Negative years will be handled correctly.
BUGS
None.
SEE ALSO
DateToNum()
Date/NumToTime Date/NumToTime
NAME
NumToTime -- Returns the real time for a numeric time. (V33.250)
SYNOPSIS
time_NumToTime(num,rhour,rmin,rsec);
d0 a0 a1 a2
void time_NumToTime(unsigned short num,
unsigned short *const rhour, unsigned short *const rmin,
unsigned short *const rsec);
void time_NumToTime(unsigne dshort num, unsigned short &rhour,
unsigned short &rmin, unsigned short &rsec);
FUNCTION
Returns the real time for a numeric time.
INPUTS
num - Numeric time
RESULT
rhour - hours
rmin - minutes
rsec - seconds
EXAMPLE
...
time_NumToTime(123600,&rhour,&rmin,&rsec);
...
NOTES
None.
BUGS
None.
SEE ALSO
TimeToNum()
Date/ParseDate Date/ParseDate
NAME
ParseDate -- Parses a date string (V33.290)
SYNOPSIS
pos = date_ParseDate(fmt,dstr,lang,calendar,actualjd,
day,month,year,pfmt,plang);
d0 d1 d2 d3 d4
a0 a1 a2 a3 d5
short date_ParseDate(const char *const fmt, const char *const dstr,
const date_Languages lang, const date_Calendars calendar,
const unsigned long actualjd, unsigned short *const day,
unsigned short *const month, long *const year, char *const pfmt,
date_Languages *const plang);
short date_ParseDate(const char *const fmt, const char *const dstr,
const date_Languages lang, const date_Calendars calendar,
const unsigned long actualjd, unsigned short *const day,
unsigned short *const month, long *const year, char *const pfmt,
date_Languages &plang);
FUNCTION
Parses the date from a string.
INPUTS
fmt - Format template string
dstr - Datestring to parse
lang - Language to use for strings
calendar - Calendar system to use for decoding
actualjd - Actual date in JD form
pfmt - Buffer for format template of parsed string or NULL
RESULT
pos - 0 : The string has been parsed successfully.
>0 : An error occured during parsing - subtract one to get
the position of the error within the string.
-1 : Parameter error (one or more pointers are pointing to
NULL)
-2 : Format template string to long
day - Day of the date to format
month - Month of the date to format
year - Year of the date to format
pfmt - Format template of parsed string
plang - Parsed language
EXAMPLE
short retval;
unsigned short day,month;
long year;
char pfmtbuf[20];
date_Languages lang;
...
retval = date_ParseDate("%Y-%m-%d","1997-04-03",date_Locale,
date_Heis,2450809,&day,&month,&year,pfmtbuf,&lang);
...
SYNTAX
Syntax of Amiga compatible % commands:
%d : Day number with leading 0s
%e : Day number with leading spaces
%m : Month number with leading 0s
%h : Abbreviated month name
%b : Abbreviated month name
%B : Month name
%y : Year using two digits with leading 0s
%Y : Year using four digits with leading 0s
%j : Julian date
%w : Weekday number
%a : Abbreviated weekday name
%A : Weekday name
%U : Week number, taking Sunday as first day of week
%W : Week number, taking Monday as first day of week
%x : Same as "%m/%d/%y"
%D : Same as "%m/%d/%y"
Syntax of % commands:
%Ddf : Day with leading 0s
%Ddv : Day without leading 0s
%DDf : Day within the year with leading 0s
%DDv : Day within the year without leading 0s
%Dmf : Month with leading 0s
%Dmv : Month without leading 0s
%Dms : Month string
%Dma : Abbreviated month string
%Dy2f : 2-digit year with leading 0s
%Dy2v : 2-digit year without leading 0s
%Dy4f : 4-digit year with leading 0s
%Dy4v : 4-digit year without leading 0s
%Dys : Scaliger year
%Dj : JD date
%DJ : MJD date
%Dwn : Weekday number (1-7)
%Dws : Weekday string
%Dwa : Abbreviated weekday string
%DWf : Weeknumber with leading 0s
%DWv : Weeknumber without leading 0s
%DMf : Age of the moon (0-30 ?) with leading 0s
%DMv : Age of the moon (0-30 ?) without leading 0s
NOTES
%DMf and %DMv are only pseudo implementations, a date can not be
constructed with them.
The date-string autodetection knows over 40 date-string formats:
(yesterday|today|tomorrow)
wdn
wdn[,] mmm d[ (yy|yyyy)]
wdn[,] d[.][ ]mmm[,][ ][(yy|yyyy)]
wdn[,] d[.][ ]m[.][ ][(yy|yyyy)]
mmm d[ yyyy]
mmm/d[/(yy|yyyy)]
mmm-d[-(yy|yyyy)]
yyyy[-]Www[-]n
yyyy(-|/)m(-|/)d
yyyy(-|/)n[n[n]]
yy[-]Www[-]n
yy-nnn
d. mmm [(yy|yyyy)]
d.m.[(yy|yyyy)]
d-mmm[-(yy|yyyy)]
d-m[-yyyy]
Detection condition:
yyyymmdd | ddmmyyyy (valid date test)
jjjjjjj | yyyynnn (1723980 >= JD <= 2914672)
JJJJJ
JJJJJJ | yymmdd (MJD <= 514671)
d-m-yy | yy-m-d (yy > 31 | valid date test)
d/m[/yyyy] | m/d/yyyy (valid date test)
d/m/yy | m/d/yy | yy/m/d (valid date test)
BUGS
No known bugs.
SEE ALSO
FormatDate()
Date/ParseTime Date/ParseTime
NAME
ParseTime -- Parses a time string (V33.282)
SYNOPSIS
pos = time_ParseTime(fmt,tstr,ChangeDay,ChangeHour,DST,hour,min,
sec,zonemin,pfmt);
d0 d0 d1 d2 d3 d4 a0 a1
a2 a3 d5
short time_ParseTime(const char *const fmt,
const char *const tstr, time_ChangeDay ChangeDay,
unsigned short ChangeHour, bool *const DST,
unsigned short *const hour, unsigned short *const min,
unsigned short *const sec, short *const zonemin,
char *const pfmt);
FUNCTION
Parses the time from a string.
INPUTS
fmt - Format template string
(max. length = 46 characters)
tstr - Timestring to parse
ChangeDay - Normal day, winter to summer or summer to winter
time change day.
ChangeHour - Hour of summer/winter time change
DST - Daylight saving status
zonemin - Time that was added to GMT time to get the local
time zone (in minutes -779 to +779)
pfmt - Buffer for format template of parsed string or NULL
RESULT
pos - 0 : The string has been parsed successfully.
>0 : An error occured during parsing - subtract one to get
the position of the error within the string.
-1 : Parameter error (one or more pointers are pointing to
NULL)
-2 : Format template string to long
hour - Hour of the time that was parsed
min - Minute of the time that was parsed
sec - Second of the time that was parsed
DST - Daylight saving status
zonemin - Time that was added to GMT time to get the local
time zone (in minutes -779 to +779)
pfmt - Format template of parsed string
EXAMPLE
bool DST = false;
unsigned short Hour,Min,Sec;
short ZoneMin = 60,retval;
char pfmtbuf[20];
...
retval = time_ParseTime(NULL,"20:14",time_Normal,2,&DST,
&Hour,&Min,&Sec,&ZoneMin,pfmtbuf);
...
SYNTAX
Syntax of Amiga compatible format template % strings:
%q : Hour using 24-hour style
%H : Hour using 24-hour style with leading 0s
%Q : Hour using 12-hour style
%I : Hour using 12-hour style with leading 0s
%p : AM or PM strings
%M : The number of minutes with leading 0s
%S : Number of seconds with leadings 0s
%R : Same as "%H:%M"
%X : Same as "%H:%M:%S"
%T : Same as "%H:%M:%S"
%r : Same as "%I:%M:%S %p"
Syntax of format template % commands:
%Th1f : 12 with leading 0s
%Th1v : 12 without leading 0s
%Th2f : 24 with leading 0s
%Th2v : 24 without leading 0s
%Tpso : a/p
%Tpsu : A/P
%Tplo : am/pm
%Tplu : AM/PM
%Tmf : with leading 0s
%Tmv : without leading 0s
%Tsf : with leading 0s
%Tsv : without leading 0s
%Tj. : starting with '.'
%Tj, : starting with ','
%Tj0 : starting with '0.'
%Tj1 : starting with '0,'
%Tzh?? : hours only
%Tzm? : 0100
%TzM?? : 01:00
%Tz?z? : Use Z for UTC
%Tz?0? : Use +00 for UTC
%Tz??f : use leading 0s
%Tz??v : do not use leading 0s
%Tc1 : Use DST for s->w switch
%Tc2 : Use I/II for s->w switch
%Tc3 : Use a/b for s->w switch (24h only) - on 12h falls back to 2
NOTES
None.
BUGS
No known bugs.
SEE ALSO
FormatTime()
Date/PreviousValidDate Date/PreviousValidDate
NAME
PreviousValidDate -- Returns the prev. valid date (V33.310)
SYNOPSIS
date_PreviousValidDate(day,month,year,dday,dmonth,dyear,calendar);
d0 d1 d2 a0 a1 a2 d3
void date_PreviousValidDate(const unsigned short day,
const unsigned short month, const long year,
unsigned short *const dday, unsigned short *const dmonth,
long *const dyear, const date_Calendars calendar);
void date_PreviousValidDate(const unsigned short day,
const unsigned short month, const long year,
unsigned short &dday, unsigned short &dmonth, long &dyear,
const date_Calendars calendar);
FUNCTION
Returns the previous valid date before a given one.
INPUTS
day - Day of the date.
month - Month of the date.
year - Year of the date.
calendar - Calendar system to use
RESULT
dday - Day of the previous valid date
dmonth - Month of the previous valid date
dyear - Year of the previous valid date
EXAMPLE
...
date_PreviousValidDate(29,2,2000,&day,&month,&year,date_Gregorian);
...
NOTES
None.
BUGS
None.
SEE ALSO
ValidDate(),PreviousValidJulianDate(),PreviousValidGregorianDate(),
PreviousValidHeisDate(), NextValidDate()
Date/PreviousValidGregorianDate Date/PreviousValidGregorianDate
NAME
PreviousValidGregorianDate -- Returns the prev. valid date (V33.236)
SYNOPSIS
date_PreviousValidGregorianDate(day,month,year,dday,dmonth,dyear);
d0 d1 d2 a0 a1 a2
void date_PreviousValidGregorianDate(const unsigned short day,
const unsigned short month, const long year,
unsigned short *const dday, unsigned short *const dmonth,
long *const dyear);
void date_PreviousValidGregorianDate(const unsigned short day,
const unsigned short month, const long year,
unsigned short &dday, unsigned short &dmonth, long &dyear);
FUNCTION
Returns the previous valid date before a given one.
INPUTS
day - Day of the date.
month - Month of the date.
year - Year of the date.
RESULT
dday - Day of the previous valid date
dmonth - Month of the previous valid date
dyear - Year of the previous valid date
EXAMPLE
...
date_PreviousValidGregorianDate(29,2,2000,&day,&month,&year);
...
NOTES
None.
BUGS
None.
SEE ALSO
ValidGregorianDate(),PreviousValidJulianDate(),
PreviousValidHeisDate(), NextValidGregorianDate()
Date/PreviousValidHeisDate Date/PreviousValidHeisDate
NAME
PreviousValidHeisDate -- Returns the previous valid date (V33.235)
SYNOPSIS
date_PreviousValidHeisDate(day,month,year,dday,dmonth,dyear);
d0 d1 d2 a0 a1 a2
void date_PreviousValidHeisDate(const unsigned short day,
const unsigned short month, const long year,
unsigned short *const dday, unsigned short *const dmonth,
long *const dyear);
void date_PreviousValidHeisDate(const unsigned short day,
const unsigned short month, const long year,
unsigned short &dday, unsigned short &dmonth, long &dyear);
FUNCTION
Returns the previous valid date before a given one.
INPUTS
day - Day of the date.
month - Month of the date.
year - Year of the date.
RESULT
dday - Day of the previous valid date
dmonth - Month of the previous valid date
dyear - Year of the previous valid date
EXAMPLE
...
date_PreviousValidHeisDate(29,2,2000,&day,&month,&year);
...
NOTES
None.
BUGS
None.
SEE ALSO
ValidHeisDate(),PreviousValidJulianDate(),
PreviousValidGregorianDate(), NextValidHeisDate()
Date/PreviousValidJulianDate Date/PreviousValidJulianDate
NAME
PreviousValidJulianDate -- Returns the prev. valid date (V33.236)
SYNOPSIS
date_PreviousValidJulianDate(day,month,year,dday,dmonth,dyear);
d0 d1 d2 a0 a1 a2
void date_PreviousValidJulianDate(const unsigned short day,
const unsigned short month, const long year,
unsigned short *const dday, unsigned short *const dmonth,
long *const dyear);
void date_PreviousValidJulianDate(const unsigned short day,
const unsigned short month, const long year,
unsigned short &dday, unsigned short &dmonth, long &dyear);
FUNCTION
Returns the previous valid date before a given one.
INPUTS
day - Day of the date.
month - Month of the date.
year - Year of the date.
RESULT
dday - Day of the previous valid date
dmonth - Month of the previous valid date
dyear - Year of the previous valid date
EXAMPLE
...
date_PreviousValidJulianDate(29,2,2000,&day,&month,&year);
...
NOTES
None.
BUGS
None.
SEE ALSO
ValidJulianDate(),PreviousValidGregorianDate(),
PreviousValidHeisDate(), NextValidJulianDate()
Date/RangeDiff Date/RangeDiff
NAME
RangeDiff -- Calculates the range between 2 dates. (V33.310)
SYNOPSIS
date_RangeDiff(day1,month1,year1,day2,month2,year2,days,
months,years,calendar);
d0 d1 d2 d3 d4 d5 a0
a1 a2 d6
void date_RangeDiff(unsigned short day1,
unsigned short month1, long year1, unsigned short day2,
unsigned short month2, long year2, short *const days,
short *const months, long *const years,
const date_Calendars calendar);
void date_RangeDiff(unsigned short day1,
unsigned short month1, long year1, unsigned short day2,
unsigned short month2, long year2, short &days, short &months,
long &years, const date_Calendars calendar);
FUNCTION
RangeDiff gives you back the number of days, months and
years between two specified dates.
INPUTS
day1 - day of the first date
month1 - month of the first date
year1 - year of the first date
day2 - day of the second date
month2 - month of the second month
year2 - year of the second date
calendar - Calendar system to use
RESULT
days - The number of days between the two dates
(positive if date1 <= date2).
months - The number of months between the two dates
(positive if date1 <= date2).
years - The number of years between the two dates
(positive if date1 <= date2).
EXAMPLE
short days,months;
long years;
...
date_RangeDiff(18,9,1970,25,1,1998,&days,&months,&years,
date_Gregorian);
printf("Age of Kai Hofmann is : %ld years, %hd months, %hd days\n",
years,months,days);
...
NOTES
It is better only to use this function for years from 8 to 8000!
BUGS
If you use one of the dates 5.10.1582 to 14.10.1582 you will get an
incorrect output because these days don't exist, except in the
Julian calendar!
SEE ALSO
JulianRangeDiff(),GregorianRangeDiff(),HeisRangeDiff()
Date/ScaligerYearToG Date/ScaligerYearToG
NAME
ScaligerYearToG -- Returns the Scaliger year as Gregorian year. (V33)
SYNOPSIS
year = date_ScaligerYearToG(syear);
d0 d0
long date_ScaligerYearToG(const unsigned long syear);
FUNCTION
Returns the Gregorian year of a Scaliger year.
INPUTS
syear - Scaliger year
RESULT
year - The Gregorian year
EXAMPLE
...
year = date_ScaligerYearToG(6400);
...
NOTES
It is better to use this function only from 4707 to 7981!
BUGS
unknown.
SEE ALSO
ScaligerYearToJ(),ScaligerYearToH()
Date/ScaligerYearToH Date/ScaligerYearToH
NAME
ScaligerYearToH -- Returns the Scaliger year as Heis year. (V33)
SYNOPSIS
year = date_ScaligerYearToH(syear);
d0 d0
long date_ScaligerYearToH(const unsigned long syear);
FUNCTION
Returns the Heis year of a Scaliger year.
INPUTS
syear - Scaliger year
RESULT
year - The Heis year
EXAMPLE
...
year = date_ScaligerYearToH(7000);
...
NOTES
It is better to use this function only from 4707 to 7981!
BUGS
unknown.
SEE ALSO
ScaligerYearToJ(),ScaligerYearToG()
Date/ScaligerYearToJ Date/ScaligerYearToJ
NAME
ScaligerYearToJ -- Returns the Scaliger year as Julian year. (V33)
SYNOPSIS
year = date_ScaligerYearToJ(syear);
d0 d0
long date_ScaligerYearToJ(const unsigned long syear);
FUNCTION
Returns the Julian year of a Scaliger year.
INPUTS
syear - Scaliger year
RESULT
year - The Julian year
EXAMPLE
...
year = date_ScaligerYearToJ(4800);
...
NOTES
It is better to use this function only from 4707 to 6295!
BUGS
unknown.
SEE ALSO
ScaligerYearToG(),ScaligerYearToH()
Date/ScaligerYearToYear Date/ScaligerYearToYear
NAME
ScaligerYearToG -- Returns the Scaliger year as year. (V33.310)
SYNOPSIS
year = date_ScaligerYearToG(syear,calendar);
d0 d0 d1
long date_ScaligerYearToG(const unsigned long syear,
const date_Calendars calendar);
FUNCTION
Returns the year of a Scaliger year.
INPUTS
syear - Scaliger year
calendar - Calendar system to use
RESULT
year - The year
EXAMPLE
...
year = date_ScaligerYearToG(6400,date_Gregorian);
...
NOTES
It is better to use this function only from 4707 to 7981!
BUGS
unknown.
SEE ALSO
ScaligerYearToJ(),ScaligerYearToG(),ScaligerYearToH()
Date/SecToTime Date/SecToTime
NAME
SecToTime -- Returns the time from seconds (V33)
SYNOPSIS
time_SecToTime(secs,hour,min,sec);
d0 a0 a1 a2
void time_SecToTime(unsigned long secs, unsigned short *const hour,
unsigned short *const min, unsigned short *const sec);
void time_SecToTime(unsigned long secs, unsigned short &hour,
unsigned short &min, unsigned short &sec);
FUNCTION
Gives you back the time from the specified seconds
INPUTS
secs - Time in seconds
RESULT
hour - hours (0-23)
min - minutes (0-59)
sec - seconds (0-59)
EXAMPLE
...
time_SecToTime(76860,&hour,&min,&sec);
...
NOTES
Don't forget to convert 24h time to AM/PM time if needed!
BUGS
No errorcheck, if you use a valid time
SEE ALSO
TimeToSec()
Date/SetCountry Date/SetCountry
NAME
SetCountry -- Sets the country defaults for the date lib. (V33.140)
SYNOPSIS
date_SetCountry(country);
d0
void date_SetCountry(const date_Countries country);
FUNCTION
SetCountry sets the defaults for your country.
Like: correct start of Gregorian calendar.
INPUTS
country - Country to set.
RESULT
None.
EXAMPLE
...
date_SetCountry(unknown);
...
NOTES
Will *not* work correct if something other than 'unknown' is set
for the moment!
BUGS
None.
SEE ALSO
SetFirstWeekday()
Date/SetFirstWeekday Date/SetFirstWeekday
NAME
SetFirstWeekday -- Sets the FirstWeekday default (V33.165)
SYNOPSIS
date_SetFirstWeekday(weekday);
d0
void date_SetFirstWeekday(const date_Weekdays weekday);
FUNCTION
SetFirstWeekday sets the weekday with which a week starts.
Default is: Monday
INPUTS
weekday - Weekday to set.
RESULT
None.
EXAMPLE
...
date_SetFirstWeekday(Sunday);
...
NOTES
dayerr can not be set!
BUGS
None.
SEE ALSO
SetCountry(),JulianWeek(),GregorianWeek(),HeisWeek()
Date/SupplementCentury Date/SupplementCentury
NAME
SupplementCentury -- Add century for a 2 digit year (V33.165)
SYNOPSIS
year = date_SupplementCentury(year,actualyear);
d0 d0 d1
long date_SupplementCentury(unsigned short year, long actualyear);
FUNCTION
Supplements the century for a two digit year by comparing it to the
actual year, which must be a four digit year.
This will be done by using the 'sliding window' technic.
INPUTS
year - Two digit year which should be supplemented to four
digits.
actualyear - The actual year as a four digit year.
RESULT
year - The year known by a four digit format.
EXAMPLE
...
printf("%ld\n",SupplementCentury(01,1996));
...
NOTES
None.
BUGS
No known bugs.
SEE ALSO
Date/SYearToJD Date/SYearToJD
NAME
SYearToJD -- Calcs the JD from a Scaliger year. (V33.310)
SYNOPSIS
jd = date_SYearToJD(syear,calendar);
d0 d0 d1
unsigned long date_SYearToJD(const unsigned long syear,
const date_Calendars calendar);
FUNCTION
Returns the Julianday of a Scaliger year.
INPUTS
syear - Scaliger year
calendar - Calendar system to use
RESULT
jd - The Julianday
EXAMPLE
...
jd = date_SYearToJD(4800,date_Gregorian);
...
NOTES
It is better to use this function only from 4707 to 7981!
BUGS
unknown.
SEE ALSO
JSYearToJD(),GSYearToJD(),HSYearToJD()
Date/TimeDiff Date/TimeDiff
NAME
TimeDiff -- Returns the difference in seconds (V33)
SYNOPSIS
secs = time_TimeDiff(hour1,min1,sec1,hour2,min2,sec2);
d0 d0 d1 d2 d3 d4 d5
long time_TimeDiff(const unsigned short hour1,
const unsigned short min1, const unsigned short sec1,
const unsigned short hour2, const unsigned short min2,
const unsigned short sec2);
FUNCTION
Gives you back the difference between the first and the second time
in seconds.
INPUTS
hour1 - hours of the first time
min1 - minutes of the first time
sec1 - seconds of the first time
hour2 - hours of the second time
min2 - minutes of the second time
sec2 - seconds of the second time
RESULT
secs - The difference betwen time1 and time1 in seconds.
EXAMPLE
...
secs = time_TimeDiff(21,15,00,22,0,0);
...
NOTES
Don't forget to convert AM/PM time to 24h time!
use SecToTime() to convert the seconds back to a hour,min,secs
format!
BUGS
No errorcheck, if you use a valid time
SEE ALSO
SecToTime(),TimeToSec()
Date/TimeToJD Date/TimeToJD
NAME
TimeToJD -- Returns the JD for a time. (V33)
SYNOPSIS
jd = time_TimeToJD(hour,min,sec);
d0 d0 d1 d2
float time_TimeToJD(const unsigned short hour,
const unsigned short min, const unsigned short sec);
FUNCTION
Returns the JD for a specified time.
INPUTS
hour - hour of the time to convert
min - minute of the time to convert
sec - sec. of the time to convert
RESULT
jd - This is the JD time
EXAMPLE
...
jd = time_TimeToJD(16,33,0);
...
NOTES
none
BUGS
There is no check, if the specified time is a valid time!
SEE ALSO
JDToTime()
Date/TimeToNum Date/TimeToNum
NAME
TimeToNum -- Returns the time in a numeric format. (V33.250)
SYNOPSIS
num = time_TimeToNum(hour,min,sec);
d0 d0 d1 d2
unsigned long time_TimeToNum(const unsigned short hour,
const unsigned short min, const unsigned short sec);
FUNCTION
Returns the time in a numeric format.
INPUTS
hour - hour of the time to convert
min - minute of the time to convert
sec - second of the time to convert
RESULT
num - Numeric time format:
(hour*100+min)*100+sec
EXAMPLE
...
num = time_TimeToNum(12,31,0);
...
NOTES
none
BUGS
There is no check, if the specified time is a valid time!
SEE ALSO
NumToTime()
Date/TimeToSec Date/TimeToSec
NAME
TimeToSec -- Returns the time in seconds (V33)
SYNOPSIS
secs = time_TimeToSec(hour,min,sec);
d0 d0 d1 d2
unsigned long time_TimeToSec(const unsigned short hour,
const unsigned short min, const unsigned short sec);
FUNCTION
Gives you back the time in seconds
INPUTS
hour - hours you want (0-23)
min - minutes you want (0-59)
sec - seconds you want (0-59)
RESULT
secs - Time in seconds
EXAMPLE
...
secs = time_TimeToSec(21,15,00);
...
NOTES
Don't forget to convert AM/PM time to 24h time!
BUGS
No errorcheck, if you use a valid time
SEE ALSO
SecToTime()
Date/TimeZoneFactor Date/TimeZoneFactor
NAME
TimeZoneFactor -- Returns the value you have to add to GMT time (V33)
SYNOPSIS
addhours = time_TimeZoneFactor(degrees);
d0 d0
short time_TimeZoneFactor(const short degree);
FUNCTION
This gives you the hours you have to add to GMT time,
specified on the fact, that a timezone is 15 degrees
and that GMT is centered on 0 degrees!
INPUTS
degrees - Position of timezone you live in
(from -180 east to +180 west)
RESULT
addhours - Time to add to GMT time to get your local time zone
(-12 to +12)
EXAMPLE
...
addhours = time_TimeZoneFactor(-8);
...
NOTES
none
BUGS
No errorcheck, if you put in valid degrees (-180 to +180)
Only full degrees are supportet, keep sure that you
round in the right way for 0.x degree places
I am not sure about the correct +/- behaviour!!!
SEE ALSO
Date/ValidDate Date/ValidDate
NAME
ValidDate -- Checks if the date is a valid date (V33.310)
SYNOPSIS
valid = date_ValidDate(day,month,year,calendar);
d0 d0 d1 d2 d3
bool date_ValidDate(const unsigned short day,
const unsigned short month, const long year,
const date_Calendars calendar);
FUNCTION
ValidDate checks if the date is valid.
INPUTS
day - Day of the date.
month - Month of the date.
year - Year of the date.
calendar - Calendar system to use
RESULT
valid - true : The date is ok.
false : This is not a correct date!
EXAMPLE
...
if (date_ValidDate(29,2,2000,date_Gregorian))
printf("ok\n");
else
printf("wrong date!!!\n");
...
NOTES
None.
BUGS
None.
SEE ALSO
ValidTime(),ValidJulianDate(),ValidGregorianDate(),ValidHeisDate()
Date/ValidGregorianDate Date/ValidGregorianDate
NAME
ValidGregorianDate -- Checks if the date is a valid date (V33.135)
SYNOPSIS
valid = date_ValidGregorianDate(day,month,year);
d0 d0 d1 d2
bool date_ValidGregorianDate(const unsigned short day,
const unsigned short month, const long year);
FUNCTION
ValidGregorianDate checks if the date is valid.
INPUTS
day - Day of the date.
month - Month of the date.
year - Year of the date.
RESULT
valid - true : The date is ok.
false : This is not a correct date!
EXAMPLE
...
if (date_ValidGregorianDate(29,2,2000))
printf("ok\n");
else
printf("wrong date!!!\n");
...
NOTES
None.
BUGS
None.
SEE ALSO
ValidTime(),ValidJulianDate(),ValidHeisDate()
Date/ValidHeisDate Date/ValidHeisDate
NAME
ValidHeisDate -- Checks if the date is a valid date (V33.135)
SYNOPSIS
valid = date_ValidHeisDate(day,month,year);
d0 d0 d1 d2
bool date_ValidHeisDate(const unsigned short day,
const unsigned short month, const long year);
FUNCTION
ValidHeisDate checks if the date is valid.
INPUTS
day - Day of the date.
month - Month of the date.
year - Year of the date.
RESULT
valid - true : The date is ok.
false : This is not a correct date!
EXAMPLE
...
if (date_ValidHeisDate(29,2,2000))
printf("ok\n");
else
printf("wrong date!!!\n");
...
NOTES
None.
BUGS
None.
SEE ALSO
ValidTime(),ValidJulianDate(),ValidGregorianDate()
Date/ValidJulianDate Date/ValidJulianDate
NAME
ValidJulianDate -- Checks if the date is a valid date (V33.135)
SYNOPSIS
valid = date_ValidJulianDate(day,month,year);
d0 d0 d1 d2
bool date_ValidJulianDate(const unsigned short day,
const unsigned short month, const long year);
FUNCTION
ValidJulianDate checks if the date is valid.
INPUTS
day - Day of the date.
month - Month of the date.
year - Year of the date.
RESULT
valid - true : The date is ok.
false : This is not a correct date!
EXAMPLE
...
if (date_ValidJulianDate(29,2,2000))
printf("ok\n");
else
printf("wrong date!!!\n");
...
NOTES
None.
BUGS
None.
SEE ALSO
ValidTime(),ValidGregorianDate(),ValidHeisDate()
Date/ValidTime Date/ValidTime
NAME
ValidTime -- Checks if the time is a valid 24h-format time (V33.135)
SYNOPSIS
valid = time_ValidTime(hour,min,sec);
d0 d0 d1 d2
bool time_ValidTime(const unsigned short hour,
const unsigned short min, const unsigned short sec);
FUNCTION
ValidTime checks if the time (24h format only) is valid.
INPUTS
hour - Hour of the time.
min - Minute of the time.
sec - Second of the time.
RESULT
valid - true : The time is ok.
false : This is not a correct time!
EXAMPLE
...
if (time_ValidTime(25,0,0))
printf("ok\n");
else
printf("wrong time!!!\n");
...
NOTES
None.
BUGS
None.
SEE ALSO
ValidJulianDate(),ValidGregorianDate(),ValidHeisDate()
Date/Week Date/Week
NAME
Week -- Gets the weeknumber for a specified date. (V33.310)
SYNOPSIS
weeknr = date_Week(day,month,year,calendar);
d0 d0 d1 d2 d3
unsigned short date_Week(const unsigned short day,
const unsigned short month, const long year,
const date_Calendars calendar);
FUNCTION
Week gets the number of the week for a specified date.
INPUTS
day - day of the date
month - month of the date
year - year of the date
calendar - Calendar system to use
RESULT
week - This is the number of the week the specified date lies in.
If the first day in a new year is a Friday, Saturday or
Sunday, this would be the last week of the last year!
If the 29.12. is a Monday, the 30.12. is a Monday or a Tuesday,
the 31.12. is a Monday, Tuesday or a Wednesday this is the
first week of the next year!
EXAMPLE
...
weeknr = date_Week(4,10,1582,date_Gregorian);
...
NOTES
It is better only to use this function for years from 8 to 3200!
BUGS
For years < 0 errors could occur.
SEE ALSO
JulianWeek(),GregorianWeek(),HeisWeek(),SetFirstWeekday()
Date/Weekday Date/Weekday
NAME
Weekday -- Gets the weekday of a specified date. (V33.310)
SYNOPSIS
weekday = date_Weekday(day,month,year,calendar);
d0 d0 d1 d2 d3
date_Weekdays date_Weekday(const unsigned short day,
unsigned short month, long year, const date_Calendars calendar);
FUNCTION
Weekday gets the weekday for a specified date.
INPUTS
day - day of the date
month - month of the date
year - year of the date
calendar - Calendar system to use
RESULT
weekday - This result is of type:
date_Weekdays = {date_dayerr,date_Monday,date_Tuesday,
date_Wednesday,date_Thursday,date_Friday,
date_Saturday,date_Sunday};
dayerr will show you, that an error occurs!
EXAMPLE
...
weekday = date_Weekday(22,1,1994,date_Gregorian);
if (weekday == dayerr)
{
...
}
...
NOTES
It is better only to use this function for years from 8 to 3200!
In this version dayerr will only occur for the lost days :)
BUGS
It's not possible to use years < 0 (for more see JulianWeekday()).
SEE ALSO
JulianWeekday(),GregorianWeekday(),HeisWeekday()
Date/WeekdayShortText Date/WeekdayShortText
NAME
WeekdayShortText -- Get the weekday as short text string. (V33.092)
SYNOPSIS
maxlen = date_WeekdayShortText(wday,wtext,lang);
d0 d0 a0 d1
unsigned short date_WeekdayShortText(const date_Weekdays wday,
char *const wtext, const date_Languages lang);
FUNCTION
This function gets the short text string for the weekday-number.
INPUTS
wday - Weekday to transform into a string.
wtext - Pointer to a string to fill in the short weekday-text.
lang - Language for which you want the short weekday-text.
RESULT
maxlen - Maximum possible length for the weekday-string, this should
help you if you want to justify the string right or if you
want to center it! (Normally it's two or three!)
0 indicates an error!
EXAMPLE
...
char wtxt[3];
...
maxlen = date_WeekdayShortText(Monday,&wtxt,English);
...
NOTES
Languages:
Locale : This is an Amiga >= OS2.1 only feature, for <= OS2.0
and other systems it will return English text!
BUGS
In this version there is no check, if there is enough space in
wtext!
SEE ALSO
WeekdayText(),MonthText(),MonthShortText()
Date/WeekdayText Date/WeekdayText
NAME
WeekdayText -- Get the weekday as text string. (V33.091)
SYNOPSIS
maxlen = date_WeekdayText(wday,wtext,lang);
d0 d0 a0 d1
unsigned short date_WeekdayText(const date_Weekdays wday,
char *const wtext, const date_Languages lang);
FUNCTION
This function gets the text string for the weekday-number.
INPUTS
wday - Weekday to transform into a string.
wtext - Pointer to a string to fill in the weekday-text.
lang - Language for which you want the weekday-text.
RESULT
maxlen - Maximum possible length for the weekday-string, this should
help you if you want to justify the string right or if you
want to center it!
0 indicates an error!
EXAMPLE
...
char wtxt[20];
...
maxlen = date_WeekdayText(Monday,&wtxt,English);
...
NOTES
Languages:
Locale : This is an Amiga >= OS2.1 only feature, for <= OS2.0
and other systems it will return English text!
BUGS
In this version there is no check, if there is enough space in
wtext!
SEE ALSO
MonthText(),WeekdayShortText(),MonthShortText()
Date/WWtoDM Date/WWtoDM
NAME
WWtoDM -- Convert Weekday,Week to Day,Month. (V33.310)
SYNOPSIS
date_WWtoDM(weekday,week,year,dday,dmonth,dyear,calendar);
d0 d1 d2 a0 a1 a2 d3
void date_WWtoDM(const date_Weekdays weekday,
const unsigned short week, const long year,
unsigned short *const dday, unsigned short *const dmonth,
long *const dyear, const date_Calendars calendar);
void date_WWtoDM(const date_Weekdays weekday,
const unsigned short week, const long year,
unsigned short &dday, unsigned short &dmonth,
long &dyear, const date_Calendars calendar);
FUNCTION
Converts weekday,week to day,month.
INPUTS
weekday - weekday of the date to convert
week - week of the date to convert
year - year of the date to convert
calendar - Calendar system to use
RESULT
day - day of the converted date
month - month of the converted date
year - year of the converted date
EXAMPLE
unsigned short day,month;
long year;
...
date_WWtoDM(date_Thursday,14,1997,&day,&month,&year,date_Gregorian);
/* 1997-04-03 */
...
NOTES
It is better to use this function only from 8 to 8000!
Be careful, the resulting year might be different from the input
year!
BUGS
unknown.
SEE ALSO
JulianWWtoDM(),GregorianWWtoDM(),HeisWWtoDM()
Date/YearDays Date/YearDays
NAME
YearDays -- Gives back the number of days in a year. (V33.310)
SYNOPSIS
days = date_YearDays(year,calendar);
d0 d0 d1
unsigned short date_YearDays(const long year,
const date_Calendars calendar);
FUNCTION
YearDays gives you back the number of days in
a specified year.
INPUTS
year - The year in which to count the days.
calendar - Calendar system to use
RESULT
days - The number of days the year uses.
EXAMPLE
unsigned short days;
...
days = date_YearDays(1994,date_Gregorian);
printf("Days of 1994 : %hu\n",days);
...
NOTES
It is better only to use this function for years from 8 to 8000!
BUGS
No known bugs.
SEE ALSO
JulianYearDays(),GregorianYearDays(),HeisYearDays()
Date/YearToScaliger Date/YearToScaliger
NAME
YearToScaliger -- Returns the year as Scaliger year. (V33.310)
SYNOPSIS
syear = date_YearToScaliger(year,calendar);
d0 d0 d1
unsigned long date_YearToScaliger(const long year,
const date_Calendars calendar);
FUNCTION
Returns the Scaliger year.
INPUTS
year - year
calendar - Calendar system to use
RESULT
syear - The Scaliger year
EXAMPLE
...
syear = date_YearToScaliger(1994,date_Gregorian);
...
NOTES
It is better to use this function only from 8 to 3200!
BUGS
unknown.
SEE ALSO
JYearToScaliger(),GYearToScaliger(),HYearToScaliger()